Sei sulla pagina 1di 51

Datos de usuario

Secuencia de Octetos
de la capa de Aplicacin

Segmento
TCP

Cabecera
TCP

Datagrama
IP

Cabecera
IP

Paquete de
capa de Red

Cabecera
de red

Tipos de paquetes de la arquitectura TCP/IP

Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

Telnet, FTP, E-mail, etc


Aplicacin

TCP, UDP
Transporte
IP, ICMP, IGMP
Red
Drivers y placas de red
Enlace
Relacin de protocolos TCP/IP con las capas del modelo de referencia

MIME: Multi-Purpose Internet Mail Extensions


SMTP: Simple Mail Transfer Protocol
SNMP: Simple Network Management Protocol
UDP: User Datagram Protocol
PIM, DVMRP, MOSPF, Gopher, NNTP, etc....

BGP: Border Gateway Protocol


FTP : File Transfer Protocol
HTTP: Hypertext Transfer Protocol
ICMP: Internet Control Message Protocol
IP:
Internet Protocol
OSPF: Open Shortest Path First

MIME

BGP

FTP

HTTP

SMTP

Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

TCP

TELNET

SNMP

UDP
ICMP

IP
Protocolos ms importantes de la familia TCP/IP

OSPF

- La

capa superior a IP conocida usualmente como capa de transporte.

- TCP (Transmission Control Protocol):


- Protocolo extremo-extremo.
- Fiable.
- Orientado a conexin.
- Control de flujo para evitar que emisor rpido congestione receptores ms lentos.
- Para aplicaciones que requieren ms fiabilidad que rapidez (datos).
Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

-UDP (User Datagram Protocol):


- Protocolo sin conexin.
- No fiable.
- No necesita control de flujo.
- Para aplicaciones que prefieren la rapidez a la precisin (audio y video).

- Internet:

diversas topologas, tecnologas, anchos de banda, tamaos de paquete,


retardos, etc.

- TCP diseado para adaptarse dinmicamente a las diversas propiedades de la Red.


- Definicin formal en RFC 793.
- RFC 1122 corrige diversos errores.
Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

- RFC 1323 extensiones de TCP.


- Emisor y receptor necesitan puntos terminales (sockets).
- Cada socket tiene un nmero: @IP del host + N port (n de 16 bits local al host).
- Para lograr el servicio TCP debe crearse una conexin explcita entre un socket del
nodo emisor y otro socket del nodo receptor.

Primitivas
socket
bind
listen
accept

Significado

(enchufar) Crea un punto terminal de comunicacin


(ligar) Conecta una direccin local a un socket
(escuchar) Anuncia disponibilidad para aceptar conexiones
expresando tamao de cola
(aceptar) Bloquea al invocador hasta la llegada de un intento de
conexin

Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

connect (conectar) Intenta establecer una conexin activamente


send

(enviar) Enva datos a travs de la conexin

receive

(recibir) Recibe datos a travs de la conexin

close

(cerrar) Libera la conexin


Primitivas de sockets de TCP

- Un socket puede recibir una o varias conexiones al mismo tiempo.


- Las conexiones se identifican con (socket1, socket2) sin ningn otro
identificador ni circuito virtual.
- Todas las conexiones TCP son:
- dplex integral: el trfico puede ir en ambos sentidos a un tiempo.
- Extremo a extremo: cada conexin tiene exactamente dos puntos terminales (TCP
no reconoce difusin ni multitransmisin).
Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

- Una conexin TCP es una corriente de bytes y no una corriente de mensajes,


por lo que los lmites de los mensajes no se conservan extremo a extremo y los
receptores no pueden detectar las unidades de transmisin del origen.
- Los datos pueden ser enviados inmediatamente (PUSH) o almacenados en buffers.
- El servicio TCP permite tambin definir datos urgentes (URGENT).

- Cada conjunto de bytes de una conexin tiene su propio n de secuencia de 32 bits.


- Las entidades transmisoras y receptoras TCP intercambian datos en forma de
segmentos. Pueden emitir y recibir datos a la vez
- La transmisin de datos de nivel de transporte presenta tres fases:
- Establecimiento de conexin
- Intercambio de datos
- Liberacin de conexin

Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

- Un segmento TCP es un paquete de datos formado por:


- una cabecera de tamao fijo de 20 bytes.
- una parte opcional de tamao variable.
- cero o ms bytes de datos.
- El protocolo TCP decide el tamao de los segmentos con dos lmites:
- Cada segmento TCP (incluida cabecera) debe caber en los 65.535 bytes de IP.
- Cada red tiene su MTU y cada segmento debe caber en una MTU. La MTU
define el lmite superior del tamao del segmento.
- Un segmento demasiado grande es fragmentado por los routers frontera (overhead)

Protocolo bsico: Ventana deslizante:


- Emisor enva un segmento e inicia un temporizador. La cabecera de cualquier
segmento de TCP contiene el N de secuencia del primer octeto de los datos en el
segmento.
- Cuando receptor recibe el segmento, el TCP del receptor devuelve un segmento
(con datos o sin ellos) con N de ACK igual al siguiente N de secuencia que espera
recibir.
- Si temporizador del emisor expira antes de la recepcin del ACK, el transmisor
enva el segmento de nuevo (ACK + con retransmisin).
Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

- Garantiza la entrega fiable y ordenada de datos. Fuerza control de flujo entre


emisor y receptor.
- Complicaciones:
- Fragmentacin
- Prdidas de ACK
- Duplicaciones de segmentos
- Desorden de segmentos

Puertos: @IP+NPuerto (well-known ports).


N secuencia: posicin, en el caudal de datos, del primer byte (octeto) perteneciente al segmento.
NACK: Posicin, en el stream, del byte de menor nmero que el receptor an no ha recibido
(N de secuencia del siguiente byte a recibir).
Desplazamiento: o longitud de cabecera (4 bits) indica n de palabras de 32 bits de la cabecera. Marca comienzo de datos.
Reservado: 6 bits no usados pensados para mejorar el protocolo cuando sea necesario.
URG: 1 bit que se pone a 1 si se usa el puntero a datos urgente para indicar el comienzo de los datos urgentes.
ACK: Si vale 1 indica que el n del ACK es vlido. Si vale 0 se ignora el campo ACK.
PSH: Datos empujados con push para que el receptor no los almacene en el buffer y los pase rpido a la aplicacin.
RST: Se activa a 1 para reestablecer la conexin cuando aparecen problemas (nodo cado, segmentos errneos, etc).
SYN: Para establecer conexiones. (Connection request SYN=1 y ACK=0) (Connection accepted: SYN=1 y ACK=1).
FIN: Libera la conexin. Especifica que el emisor no tiene ms datos para transmitir. El receptor puede seguir recibiendo.
Ventana: Para control de flujo mediante ventana deslizante de tamao variable. Indica cantidad de bytes que puede enviarse
Bit 0
4
10
16
31

Puerto de destino

Nmero de secuencia
Nmero de confirmacin (ACK) Siguiente segmento esperado
Desplaza6 bits reservados
miento

FIN
SYN
RST
PSH
ACK
URG

Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

20 octetos

Puerto de origen

Suma de comprobacin (CRC)

Tamao de Ventana
Puntero a datos urgentes

Opciones + Relleno (0 o ms palabras de 32 bits) 40 bytes mximo

Datos de usuario (65.535 -20 = 65.515 bytes como mximo)

-Ventana = 0 indica que se han recibido todos los bytes hasta N ACK-1 pero que
el receptor no desea recibir datos de momento. Se puede reiniciar el envo generando el receptor un segmento con el mismo nmero de ACK y un campo de
ventana distinto de 0.
RFC 1323 escala de ventana para desplazar 16 bits a la izquierda aportando una
ventana de hasta 232 bytes soportada en las versiones TCP actuales
- Suma de comprobacin (CRC) para lograr fiabilidad. Es un CRC de la cabecera,
los datos y la siguiente pseudocabecera:
32 bits
Direccin IP nodo origen
Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

Direccin IP nodo destino


00000000

N protocolo TCP=6

Longitud de segmento TCP

-Algoritmo CRC suma todas las palabras de 16 bits complemento a 1 y luego


obtiene el complemento a 1 de la suma.
-Incluir las @ IP permite detectar paquetes mal entregados pero viola la jerarqua
de protocolos.

- Campo opciones: para poder aadir caractersticas no cubiertas por la cabecera


fija. Por ejemplo: nodos especifiquen la carga til mxima que pueden aceptar.
Preferible segmentos grandes. En el establecimiento cada nodo anuncia su
mximo y puede conocer el del otro extremo. Se elige el ms pequeo de ambos.
Si no se define valor alguno el tamao por defecto de los segmentos es de
536+20 octetos.

Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

- RFC 1106 introduce NAK (Negative ACK) para que el receptor solicite la
retransmisin de un segmento especfico y evitar las retransmisiones innecesarias
debidas a time-outs. Una vez enviado el segmento a retransmitir el receptor enva
los ACK de los datos que tenga en el buffer evitando retransmisiones.

Establecimiento de conexiones TCP


- Establecimiento de conexin a travs protocolo three-way handshake (acuerdo
de tres vas).
- Server espera pasiva de la llegada de una conexin entrante (listen y accept)
- Client ejecuta connect (@IP, puerto, tamao segmento TCP que acepta, pwd, etc),
esta primitiva enva un segmento con SYN=1 y ACK=0 y queda a la espera.
- Al llegar segmento al destino, se revisa si hay un proceso que haya ejecutado un
listen en el puerto especificado:
Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

- Si no lo hay se enva una respuesta con RST=1 para rechazar la conexin.


- Si algn proceso escucha en el puerto, ese proceso recibe el segmento y se
acepta o rechaza la conexin. Si se acepta, se devuelve un segmento de ACK

Establecimiento de conexiones TCP

Nodo 1

Nodo 2
S YN( N s ec

=x)

tiempo
SY

K=x
C
A
,
y
=
c
N(N se

Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

SYN(N

sec=x+1,

+1)

ACK=y+
1)

Establecimiento de una conexin entre dos aplicaciones:


-Crear bloque de memoria para almacenar parmetros de TCP e IP (socket, N de
secuencia, etc).
-Procedimiento de conexin con intercambio de mensajes (SYN y ACK). Cada parte
informa a la otra de:
- Espacio libre en su buffer para recibir datos.
Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

- Cantidad mxima de datos que puede llevar un segmento.


- N inicial de secuencia usado para numerar los datos de salida.

-Pasos:

Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

- Inicializacin del servidor para aceptar conexiones de clientes (apertura pasiva)


- Cliente solicita apertura de conexin TCP con servidor para una @ y puerto IP
especificado como apertura activa.
- TCP cliente enva segmento de sincronizacin SYN con N inicial de secuencia,
tamao de la ventana de recepcin y tamao del mayor segmento que puede
recibir el cliente.
- TCP servidor enva otro SYN con N inicial de secuencia; un ACK con el
identificador del primer byte de datos que debera enviar el cliente; tamao de
su ventana de recepcin y tamao del mayor segmento datos que puede recibir
- Al llegar al TCP cliente el mensaje SYN/ACK del servidor, enva de vuelta un
ACK con N que debera tener el primer byte de datos enviado por el servidor
- Tras enviar el ACK, el TCP cliente informa a su aplicacin que la conexin
est abierta.
- El TCP servidor recibe el ACK del TCP cliente e informa tambin a su
aplicacin que la conexin est abierta.
Hecho todo esto, cliente y servidor estn listos para el intercambio de datos.

Liberacin de conexiones TCP

Nodo 1

Nodo 2
FI N

tiempo
ACK
FIN
Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

ACK

Terminacin de una conexin:


Este proceso puede ser provocado por cualquiera de las partes. Suponiendo que es
la aplicacin servidora la que inicia el proceso:
1.- Aplicacin servidora indica a TCP que termine la conexin.
2.- TCP servidor enva segmento final para informar a cliente que no enviar ms
datos.
3.- El TCP cliente enva un ACK del segmento final anterior.
4.- TCP cliente informa a aplicacin cliente que servidor desea terminar.
Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

5.- Aplicacin cliente indica a TCP que termine.


6.- TCP cliente enva segmento final.
7.- TCP servidor responde con ACK al recibir el segmento anterior.
8.- TCP servidor informa finalmente a su aplicacin que la conexin ha terminado.

Gestin de ventana en TCP


buffer
Fuente
Aplicacin
escribe 2k

Sumidero
2k

4k
vaco

N Sec = 0

2k
IN=2048
ACK=2048 W

Aplicacin
escribe 3k

2k

N Sec = 2048

lleno
Fuente
bloqueada

ACK = 4096 WIN = 0

Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

Aplicacin
lee 2 k
2048
ACK = 4096 WIN =

Fuente
puede enviar
hasta 2k

1k

tiempo

2k

1k 2k

N Sec = 4096

tiempo

Gestin de ventana en TCP


- Cuando la ventana anunciada por el receptor es 0, la fuente no puede enviar
segmentos, salvo:
- Que se enven datos urgentes (matar un proceso, mensaje, etc).
- Emisor enve un segmento de 1 byte para que el receptor reanuncie el siguiente
byte esperado y el tamao de ventana. Evita bloqueos por prdida de anuncio de
la ventana.

Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

- No es necesario que fuentes enven datos tan pronto como llegan de la aplicacin,
ni que los receptores enven ACK tan pronto como sea posible. Objetivo: emisor no
enve segmentos pequeos y que el receptor no los pida:
- Algoritmo de Nagle: Envo de un byte cada vez. Se enva el primer byte en un
segmento y el resto se entra en un buffer hasta que llegue el ACK del primer byte.
- Sndrome de ventana tonta (Clark). Emisor transmite bloques muy grandes, pero
la aplicacin receptora lee 1 byte cada vez. Se intenta que el receptor anuncie
ventanas lo ms grandes posible: mnimo de (tamao mximo de segmento
anunciado al inicio de la conexin, buffer vaco a la mitad)

VERSIONES TCP
-TCP de Berkeley (1983): versin ms antigua y con menos algoritmos. Se basaba en
el control de flujo entre emisor y receptor. Todos los problemas se resolvan
entre los dos extremos sin considerar lo que ocurre en la red. Objetivo no ser
compleja. No ofrece buen resultado en redes diferentes, congestionadas o de mala
calidad, pues slo tiene en cuenta el tamao de la ventana del receptor y no
considera el tamao de la ventana de la red.

Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

-TCP TAHOE (1988): usa los algoritmos Slow Start y Congestion Avoidance para
detectar estado de la red y el control de flujo para disminuir la prdida de
segmentos. Se incluye Fast Retransmit para poder hacer la retransmisin
de segmentos perdidos lo ms rpidamente posible sin esperar a que expire el
time-out.

VERSIONES TCP
- TCP RENO (1990): la ventana de congestin crece segn Slow Start hasta llegar a
un umbral previamente definido a partir del cual comienza fase de evitacin de
congestin creciendo la ventana de forma lineal. Es Tahoe con Fast Recovery que
evita, en lo posible, que el tamao de la ventana llegue a dos y se inicie la fase
Slow Start en redes que presentan una determinada congestin con picos de gran
congestin.
Cuando expira el timeout:
CWND=1 y SSTHRESH=CWND/2
Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

Si se pierden paquetes:
CWND=SSTHRESH y SSTHRESH=CWND/2
Al recibir el ACK del segmento retransmitido se restaura
CWND=SSTHRESH

VERSIONES TCP
-TCP Net/3: (1993) Aade a Reno soporte multicast y extensiones long fat network
para superar el lmite de 64 K en el tamao de los segmentos que son un problema
en redes con gran retardo o gran ancho de banda (satlite). As se enva pocos
segmentos de gran tamao en vez de muchos de pequeo tamao.

Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

-TCP New Reno: Intenta solventar los inconvenientes de Slow Start y Congestion
Avoidance en relacin al tamao del ssthresh. Intenta buscar un valor de umbral
inicial ptimo para el estado de la red mediante el algoritmo Packet-Pair. La fuente
enva series de dos paquetes conociendo el intervalo de tiempo entre ambos. Segn
llegan los ACK se va conociendo el retardo y por tanto el estado de la red, la
situacin de congestin, etc. Tambin se usa retransmisin rpida cuando se
pierde ms de un segmento de una misma ventana.

VERSIONES TCP
-TCP Sack: (1996-98) Para redes con gran probabilidad de prdidas y/o con
trfico elevado, donde las prdidas son constantes o excesivas. Cuando receptor
recibe nuevos datos tras perder un segmento, enva un ACK duplicado a modo
de aviso para que el emisor sepa qu segmentos han llegado correctamente y
cules no, para que sean reenviados.
Sack realiza constantemente una estimacin del trfico pendiente en la red y slo
enva o retransmite segmentos si el volumen de datos o trfico estimado es menor
que el de la ventana de congestin CWND.

Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

-TCP VEGAS: Aumenta el tamao de la ventana hasta que ocurre la prdida del
paquete debida a congestin. Se fundamenta en el estudio del RTT que se
estudia en todos los segmentos. Si RTT es grande se asume que la red est
congestionada por lo que se disminuye el tamao de la ventana. Si el RTT baja
se determina que la red no est congestionada y puede aumentar la ventana.
Intenta que el emisor detecte de forma anticipada si se puede producir congestin,
comprobando constantemente la tasa de transferencia que se espera enviar y la
que realmente se logra. Intenta mantener un ancho de banda estable y equitativo si
hay suficientes buffers en los routers de la red para soportarlo. Inmadura

Conceptos
SEGMENTO. Se utiliza para designar cualquier paquete TCP, ya sea un paquete
de datos o uno de reconocimiento (Ack).
RWND (Receiver Window): es la cantidad mxima de datos que puede recibir un
receptor de trafico TCP.

Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

CWND (Congestion Window): La ventana de congestin es una variable que limita


la cantidad de datos que TCP puede enviar (en ningn momento TCP podr enviar
segmentos con un nmero de secuencia mayor que la suma del ACK con mayor
nmero de secuencia recibido y el menor de los tamaos de las variables rwnd y
cwnd). Su tamao variar dependiendo de las condiciones de la red, si la red no
descarta paquetes, el tamao de la ventana aumentar, aumentando la velocidad de
transmisin del receptor.
SMSS (Sender Maximum Segment Size) Es el mayor tamao de un segmento que el
emisor puede transmitir. La cantidad mxima de datos que el emisor puede enviar.
RMSS (Receiver Maximum Segment Size) Es el mayor tamao de segmento que el
receptor puede admitir. La cantidad mxima de datos que el receptor puede recibir.

Conceptos
IW (Initial Window) Valor inicial que toma la ventana de congestin.
RTT (Round Trip Time) tiempo que transcurre desde que el segmento ha sido
enviado, hasta que se recibe la confirmacin de que ha sido recibido por el
receptor. El RTT determina la velocidad de transmisin de TCP, ya que el
emisor TCP enva cada RTT el tamao determinado por cwnd.
CURRENT WINDOW representa la cantidad de informacin que enva el
emisor cada RTT. Esta ventana toma el valor ms pequeo entre CWND
y RMSS.
Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

SSTHRESH. Esta variable se utiliza para determinar qu algoritmo de control


de congestin, Slow Start o Congestion Avoidance se debe utilizar:
Si cwnd ssthresh
Si cwnd > ssthresh

Usar Slow start


Usar Congestion avoidance

Control de flujo:

Trfico
excesivo

Congestin

Ms trfico

RTO(1) sin
recibir ACK
Retransmisin

(1) RTO: Round Trip Overtime. Tiempo que se espera la recepcin de la confirmacin de un paquete
(ACK).
Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

Control de flujo (mecanismo de ventana deslizante)

Ventana de transmisin
Buffer de transmisin
Ventana de transmisin
Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

Bytes confirmados bytes enviados y a la espera


de ACK por el receptor
(paquetes on-flight)

Control de flujo (mecanismo de ventana deslizante)

Ventana de recepcin
Buffer de recepcin
Ventana anunciada

Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

ACKs enviados al
emisor

ACKs preparados para


enviar al emisor

Mecanismo de control de flujo y recuperacin de paquetes en TCP

Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

Control de congestin en TCP

Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

- Cuando la carga de la red es superior a lo que puede soportar.


- Capa de red tambin puede manejar las congestiones, pero la tarea dura le
corresponde a TCP, ya que la solucin real consiste en la disminucin de la
tasa de datos.
- Ley de conservacin de los paquetes: un paquete entre en la red slo cuando ha
salido otro de ella. Lograrlo mediante una gestin dinmica del tamao de la
ventana.
- Primer paso: deteccin de la congestin. Un temporizador puede actuar por
prdida de paquete debida a: ruidos o descarte por congestin. Los errores son
poco frecuentes y lo ms habitual son las congestiones.
- En el establecimiento el receptor especifica un tamao de ventana basado en su
tamao de buffer. Si la fuente se ajusta a este tamao de ventana no habr
desbordamientos de buffer en el receptor, pero s pueden aparecer en la red.
- Smiles hidrulicos con Internet: dos problemas: capacidad de la red y del
receptor manejadas por separado en Internet.
- Cada transmisor usa dos ventanas: la que le ha especificado el receptor y la
ventana de congestin. Cada una refleja la cantidad de bytes que puede enviar
el emisor. El volumen de datos a enviar es la menor de las dos ventanas.

Control de congestin en TCP

Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

- Al establecerse la conexin el emisor asigna a la ventana de congestin el tamao


de segmento mximo usado por la congestin, y enva un segmento mximo.
- Si se recibe el ACK de este segmento antes de acabar el temporizador, el emisor
aumenta el tamao de la ventana de congestin al nmero de bytes de dos
segmentos y enva dos segmentos.
- Cuando se reciben los ACK de esos dos segmentos se aumenta la ventana en otros
dos segmentos. Cada rfaga de segmentos reconocida con ACK duplica el valor
del tamao de la ventana de congestin.
- La ventana de congestin sigue creciendo exponencialmente hasta que salta un
temporizador o se alcanza el tamao de la ventana receptora. Si una rfaga de
segmentos (4096) provoca el salto de un temporizador, har que la ventana de
congestin se ajuste a la mitad (2048) de bytes de la rfaga que provoca el
time-out. Mientras la ventana de congestin est en 2048 no se enviar una
rfaga de mayor longitud, sin atender a la ventana admitida por el receptor. Este
algoritmo se llama Slow Start (arranque lento), aunque en realidad es exponencial.
- El algoritmo de control de congestin usa, adems de las ventanas de congestin y
de recepcin, un tercer parmetro umbral (inicialmente de 64 K).

Control de congestin con TCP

Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

- Cuando salta el temporizador se ajusta el umbral a la mitad de la ventana de


congestin actual y la ventana de congestin se reinicia a 1 segmento.
- Por tanto, el Slow Start se usa para determinar lo que la red puede soportar hasta
que el crecimiento exponencial se detiene por alcanzar el umbral.
- A partir de ese momento las transmisiones exitosas aumentan linealmente la
ventana de congestin (un segmento por rfaga en lugar de un segmento por cada
segmento).
- Si salta un temporizador se fija el umbral a la mitad de la ventana actual y se inicia
de nuevo el Slow Start. Llegar de nuevo a alcanzar el umbral hasta que la ventana
de congestin aumente linealmente. Si no hay time-outs la ventana de congestin
contina creciendo hasta el tamao de la ventana del receptor. Aqu deja de crecer
y permanece constante mientras no haya ms time-outs y la ventana del receptor
no cambie de tamao.
- Mayora de prdidas son debidas a congestiones.

Algoritmo Slow-Start (S-S)

-TCP en redes WAN.


-Consulta y detecta el estado de la red para adecuar el trfico TCP.
-Comienzo de transmisin lento para aumentar gradualmente (exponencial).
-Variable CWND limita la cantidad de segmentos que puede enviar la fuente para
no inundar (congestionar) la red y/o al receptor.
Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

-Valor de CWND=1 negociado inicialmente entre emisor y receptor. Por cada ACK
recibido en el emisor aumenta en 1 segmento el tamao de CWND mientras sea
menor que la de recepcin (cuyo valor es normalmente rpidamente alcanzado)
-La fuente coloca segmentos en la red a la velocidad que recibe los ACK

Algoritmo Slow-Start (S-S)


Evolucin del tamao de la ventana de congestin CWND en S-S

Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

CWND(t+1)=CWND(t)+1MSS
CWND(t+1)=CWND(t)*2
El nmero de segmentos enviados cada RTT usando la
ventana CWND crece de forma exponencial

Algoritmo Slow-Start (S-S)


Evolucin del N de segmentos enviados cada RTT

Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

-A mayor congestin, menos ACK recibidos y por tanto CWND ms pequea.


-El envo exponencial de los segmentos se mantiene mientras:
- CWND<RWND
- CWND<SSTHRESH
- No exista congestin

Algoritmo Slow-Start (S-S)


-En ausencia de congestin se alcanza RWND en RTT*log2(RWND) segundos.
-S-S hace oscilar la CWND en torno a su valor ideal ajustando la velocidad a la
que se deben transmitir los datos.
-S-S pone a prueba la capacidad de la red mediante el aumento progresivo del
ritmo de envo de datagramas hasta detectar congestin

Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

-Agresivo pues no reduce tamao ventana hasta perder paquetes. Por ello se
combina con otros algoritmos. Primero hay que averiguar a qu ritmo pueden
enviarse datos (S-S). Cuando ritmo comienza a ser alto para la red acta algoritmo
de control de congestin Congeston Avoidance (C-A)
-La ventana de congestin CWND es un control impuesto por la fuente, mientras el
control de flujo es impuesto por el receptor

Algoritmo Slow-Start (S-S)

Inicio conexin: CWND=1 segmento de tamao mximo (MSS) igual al anunciado


por el receptor
Mientras CWND<RWND y CWND<SSTHRESH y NoCongestion
Enviar N segmentos=min(CWND,RWND)
Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

Cuando llega 1 ACK


FMientras

CWND=2*MSS=CWND+1

Congestion Avoidance (C-A)


-Una vez que se conoce la capacidad de la red, trata de evitar llegar a la
congestin de sta
-Congestin: No se recibe el ACK en el tiempo esperado (RTO) o
el N ACK duplicados = 3
-C-A para que la red se recupere de congestiones sin dejar de transmitir y volver a S-S
-Durante C-A emisor transmite segmentos de forma lineal para que la red se recupere
Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

-SSTHRESH=65535 bytes al inicio (es el umbral de referencia para el valor deCWND


-Mientras CWNDSSTHRESH y NoCongestion
-Si CWND>SSTHRESH o Congestion
-Si Congestion (RTO o ACK duplicados)
Si RTO

CWND=Initial_Window=1

S-S

C-A
SSTHRES=max(2,Current-Win/2)

Congestion Avoidance (C-A)


Aunque S-S y C-A se consideren algoritmos diferentes, TCP usa ambos
conjuntamente para controlar la congestin en algn punto de la red entre
el emisor y el receptor

Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

Control de congestin de TCP en dos fases mediante S-S y C-A


Inicializacin:
cwnd = 1 segmento MSS;
ssthresh = valor arbitrariamente grande (rwnd, o bien 65.535 bytes);
Rutina de salida de TCP enva siempre el mnimo (cwnd, rmss) o la
current_window

Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

Hasta la recepcin de un ACK:


Si ( cwnd ssthresh) /* Estamos en Slow Start */
cwnd = cwnd + 1(MSS)
Sino
/* Estamos en Congestion Avoidance */
cwnd = cwnd + 1(MSS*MSS)/cwnd; (*)
Si Congestin (por timeout o por recepcin de 3 ACK duplicados):
Si timeout entonces cwnd = Initial_window=1 y entrada drstica en S-S;
ssthresh = max (2*MSS, current_window/2);
Fin.
(*) Algunas versiones BSD en C-A hacen
CWND=CWND+(MSS*MSS)/CWND+ MSS/8

Time-Out
-ACK notifica recepcin correcta de segmento. Fiabilidad
-Time-Out temporizador para contrarrestar prdidas de ACK o segmentos de datos
-TCP activa RTO al enviar un segmento X. Si expira RTO antes de llegar ACK se
retransmite el segmento X
-Valor inicial de RTO a partir de RTT medidos (RTTM).
Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

-Si se da time-out se dobla RTO (exponential backoff) que ralentiza retransmisiones


-Cada time-out dobal RTO hasta llegar a un lmite o abandonar la conexin
-Para inicializar RTO se mide el RTTM y se calcula un estimador (E) . Cada vez que
se mida RTT cambia el E y por tanto el RTO
-Estimador bsico (RFC 793)
E * E + (1- ) * RTTM ; =0,9 aprox.

Time-Out
-Estimador bsico (RFC 793)
E * E + (1- ) * RTTM ; =0,9 aprox.
-Ejemplo: RTO= * E
Factor para tener en cuenta variacin de RTTM aprox. 2

Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

-Cuando redes muy sobrecargadas las variaciones de RTMM muy grandes (hasta 16)
da RTO demasiado pequeo y en situacin de sobrecarga se retransmitirn segmentos
no perdidos (an en trnsito o con ACK que tardan ms en llegar) y esto agrava el
estado de la red. Necesarios nuevos algoritmos de clculo de RTO
-RTO calculado con la media y desviacin media de RTT:
ME: estimador derivado de la media de RTT.
DE: estimador derivado de la desviacin media de RTT

Time-Out
Expresiones:
Err=RTTM-ME (diferencia entre lo medido y lo que vala el estimador de la media
MEME+g Err (el nuevo valor del estimador de la media es el valor anterior ms
el producto de la diferencia anterior y un factor de ganancia 0,125

Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

DEDE+h(|Err|-DE) (el nuevo valor del estimador de la desviacin media se


obtiene de la suma de su valor anterior y el resultado de
multiplicar la diferencia entre Err y el estimador anterior por un
factor de ganancia 0,25. Si Err tiene un valor muy alto (RTTM
ha cambiado mucho respecto a ME) DE ve alterado su valor
de forma notable.
Cuando congestin: los valores de RTTM crecern, crecer el valor de |Err|, se
actualizar la ME, DE cambiar notablemente, aumentando RTO e incrementando
el valor del time-out de retransmisin

Time-Out

Problema:
-Si llega un ACK de un segmento que ha sido retransmitido no se puede afirmar si
lo que llega es el ACK del primero o el de la retransmisin (ambigedad de retrans)
-En este caso no se puede medir el valor del RTTM y por ello no debe actualizarse
el valor del RTO y es mejor usar el que hay en ese momento.
Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

-Una nueva medicin vlida de RTTM realizada sobre un segmento que no ha tenido
que ser retransmitido permitir calcular un nuevo valor de RTO
-La frecuencia con que se debe medir el RTT depende de la versin de TCP

Fast Retransmit
Algoritmo de retransmisin rpida (Van Jacobson, 1990) como mejora de TCP.
Acelerar retransmisin de segmentos de datos perdidos en ciertas circunstancias.
TCP puede experimentar prdidas frecuentes y receptor reciba segmento desordenado
por dos motivos principales:
Prdida del segmento

Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

Reordenacin de los segmentos en la red por algn y segmento an


pendiente de llegar y lo haga desordenadamente.
En el primer caso se debe retransmitir el segmento cuya prdida es asumida por el
emisor cuado recibe el segundo ACK de ese segmento desde el receptor

Fast Retransmit

Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

Fast Retransmit

Fast Recovery
Interesante en situaciones de congestin pasajeras o puntuales, no interesa bajar
CWND al mnimo y volver a S-S
Mejorar el throughput si se aplica S-S slo cuando se retransmite por timeout y
no por 3 ACK duplicados
Cuando llega tercer ACK duplicado:
ssthresh = mx (current_window/2, 2)
Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

Pero no entra en escena S-S, sino que se retransmite el segmento perdido como
en C-A y se establece la ventana de congestin como:
cwnd = ssthresh + 3 * (tamao del segmento)
Se hace la retransmisin del segmento perdido en C-A y no en S-S. Se pone
ssthresh a la mitad de la cwnd en el momento de detectar la prdida.

Fast Recovery

Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

Fast Retransmit y Fast Recovery conjuntamente


Si paquete perdido es detectado por retransmisin de timeout:
Congestin seria.
Poner CWND al valor mnimo y pasar control al algoritmo Slow Start.
Si se reciben 3 ACK duplicados seguidos (4 ACK idnticos sin llegada de ningn otro paquete):
Ajustar ssthresh
Retransmitir segmento perdido
CWND=ssthresh + 3* SMSS
(el 3 es por cada uno de los 3 ACK duplicados)

Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

Si se recibe otro ACK duplicado:


CWND=CWND + SMSS
Se transmite un nuevo segmento (si CWND lo permite)
Si llega un ACK nuevo:
CWND=ssthresh (disminuye el valor de la ventana)
Ejecutar C-A (Este ACK debe reconocer todos los segmentos intermedios enviados entre
el segmento perdido y la recepcin del tercer ACK duplicado, si ninguno de stos se ha perdido.
Fin

UDP (User Datagram Protocol)


Bit

16

8 bytes

Puerto origen

Puerto destino
Suma de comprobacin

Longitud segmento UDP

31

Datos

Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

UDP (RFC 768) ofrece a las aplicaciones un mecanismo para enviar datagramas
IP en bruto encapsulados sin establecer una conexin.
Los puertos tienen el mismo cometido que en TCP.
El campo longitud incluye la cabecera de 8 octetos y los datos.
El CRC incluye la misma pseudocabecera de TCP

UDP (User Datagram Protocol)

Protocolo extremo a extremo como TCP


Ofrece a las aplicaciones mecanismo de comunicacin no orientado a la conexin
(datagrama). Cada datagrama UDP se encapsula en un datagrama IP
No fiable (entrega de datagramas y proteccin ante duplicidades no garantizadas)
Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs

Usado por SNMP, MBone, RIP, etc.

Potrebbero piacerti anche