Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Secuencia de Octetos
de la capa de Aplicacin
Segmento
TCP
Cabecera
TCP
Datagrama
IP
Cabecera
IP
Paquete de
capa de Red
Cabecera
de red
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
BGP
FTP
HTTP
SMTP
TCP
TELNET
SNMP
UDP
ICMP
IP
Protocolos ms importantes de la familia TCP/IP
OSPF
- La
- Internet:
Primitivas
socket
bind
listen
accept
Significado
receive
close
Puerto de destino
Nmero de secuencia
Nmero de confirmacin (ACK) Siguiente segmento esperado
Desplaza6 bits reservados
miento
FIN
SYN
RST
PSH
ACK
URG
20 octetos
Puerto de origen
Tamao de Ventana
Puntero a datos urgentes
-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
N protocolo TCP=6
- 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.
Nodo 1
Nodo 2
S YN( N s ec
=x)
tiempo
SY
K=x
C
A
,
y
=
c
N(N se
SYN(N
sec=x+1,
+1)
ACK=y+
1)
-Pasos:
Nodo 1
Nodo 2
FI N
tiempo
ACK
FIN
Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs
ACK
Sumidero
2k
4k
vaco
N Sec = 0
2k
IN=2048
ACK=2048 W
Aplicacin
escribe 3k
2k
N Sec = 2048
lleno
Fuente
bloqueada
Aplicacin
lee 2 k
2048
ACK = 4096 WIN =
Fuente
puede enviar
hasta 2k
1k
tiempo
2k
1k 2k
N Sec = 4096
tiempo
- 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.
-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.
-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.
-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.
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
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
Ventana de transmisin
Buffer de transmisin
Ventana de transmisin
Jos Luis Gonzlez Snchez http://patanegra.unex.es/jlgs
Ventana de recepcin
Buffer de recepcin
Ventana anunciada
ACKs enviados al
emisor
-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
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
-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
CWND=2*MSS=CWND+1
CWND=Initial_Window=1
S-S
C-A
SSTHRES=max(2,Current-Win/2)
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
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
-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
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
Fast Retransmit
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
16
8 bytes
Puerto origen
Puerto destino
Suma de comprobacin
31
Datos
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