Documente Academic
Documente Profesional
Documente Cultură
4
Mensajes y bytes
TCP no mantiene las fronteras entre los
bloques recibidos de la capa de aplicacin,
ni los recibidos de la red
Ejemplo: Un mensaje (ABCD) es enviado
en 4 paquetes de capa 3 separados, pero
devuelto a la aplicacin destino como un
conjunto de bytes ABCD
5
Protocolo TCP
Unidad de datos (TPDU) = Segmento
Nmero de secuencia de 32 bits
Se numeran los bytes, no los segmentos
Reconocimientos cumulativos
Encabezado de 20 bytes (+ opciones)
Tamao mximo del segmento
carga del paquete IP: mximo 64 Kbytes
TCP trata de evitar fragmentacin en capas inferiores.
Por ello se autolimita a la MTU (maximun transfer
unit) de la red, tpico 1500 bytes.
Usa protocolo de ventanas deslizantes de
tamao de ventana variable
6
Formato del segmento TCP
Puerto de origen Puerto de destino
Nmero de secuencia
Nmero de reconocimiento
Opciones (opcional)
Datos (opcional)
32 bits
7
Deteccin de errores
Simple suma de comprobacin (16 bits)
El mensaje se divide en palabras de 16 bits, y
se hace la suma en complemento a 1
Se hace el complemento a 1 (invertir 1s y 0s)
Se hace sobre los datos, el encabezado, y
un "pseudoencabezado" de capa 3
8
Pseudo encabezado para
suma de comprobacin
Se utiliza en el clculo del checksum de TCP
Checksum se hace sobre pseudoencabezado +
segmento
Viola la independencia de capas
Se modifica al cambiar de versin de IP!
Direccin IP de origen
Direccin IP de destino
32 bits
9
Recuperacin de errores y
prdidas
El transmisor inicia un temporizador al
transmitir segmento
Si no llega reconocimiento antes de expiracin
del temporizador, se retransmite
Si recibo 3 reconocimientos del mismo n
secuencia, asumo prdida
Se asume que siguen llegando segmentos,
faltando uno en el medio
Problema si la red reordena muchos
segmentos
10
Banderas
U - hay datos urgentes
A - Campo de reconocimiento vlido
P - Push (se pide celeridad para enviar los
datos a la capa de aplicacin)
R - Reset (cierre abrupto de conexin)
S - Syn (sincronizacin inicial de nmeros
de secuencia. Establecimiento)
F - Fin (solicitud de fin de conexin)
11
Opciones
El campo de Opciones permite
intercambiar datos no obligatorios
Se han ido agregando nuevas opciones
Maximum Segment Size (MSS)
Escala de la ventana (WSCALE)
Asentimiento selectivo (SACK)
Timestamp
Asentimiento negativo (NAK)
Otras
12
Opciones (cont.)
MSS: observamos el tamao mximo de
paquete que podemos mandar (dado por
las capas inferiores), y descontamos los
encabezados. Se enva en primer
segmento
Por ejemplo, en ethernet el mximo es 1500
bytes, por lo que MSS es 1460
NACK: avisar que no recib un
determinado segmento (no se usa)
Otras: veremos luego
13
Problemas con los segmentos
Prdidas de segmentos por rutas
congestionadas, enlaces cados, o errores
Segmentos llegan fuera de orden
Segmentos se duplican por retardos que
obligan a la retransmisin o por problemas
en las capas inferiores
14
Establecimiento de conexin
en TCP
Originador Destinatario
Solicitud de conexin
Bandera SYN = 1
Bandera ACK = 0
Secuencia = x
Respuesta
Bandera SYN = 1
Bandera ACK = 1
Secuencia = y
Reconocimiento = x + 1
Confirmacin
Bandera SYN = 0
Bandera ACK = 1
Secuencia = x + 1
Reconocimiento = y + 1
Reset de conexin
Bandera FIN = 0
Bandera ACK = 1
Bandera RST = 1
La aplicacin en el host A cierra la Secuencia = w+1
conexin y deja de escuchar (por Reconocimiento = z+1
ejemplo termina)
17
Corte abrupto de conexin
Los datos enviados luego de la
confirmacin de corte de B hacia A se
pierden
Los ltimos datos enviados por B y
reconocidos son hasta el byte z,
cualquier otro dato posterior debe
asumirse que se perdi (a menos que
recibamos ACK)
18
Colisin de conexiones
21
Ejemplo: transmisin de datos
22
Ejemplo: FIN simtrico
B podra
enviar datos
23
Estados de la conexin
24
Significado de los estados
25
Control de Flujo.
Poltica de transmisin en TCP
El objetivo del control de flujo es adaptar la
velocidad de envo a la capacidad del receptor
El receptor informa sobre el tamao de la
ventana (tamao de buffer disponible) en cada
segmento
Campo "Tamao de ventana en encabezado TCP
El transmisor no puede tener en trnsito ms
que RWIN bytes a partir del ltimo byte
reconocido
De esta manera, el receptor controla la cantidad
mxima de datos que el transmisor puede
enviarle en cada momento
26
Manejo de ventana del receptor
Podra destinarse buffer fijo en el receptor
La aplicacin puede solicitarlo
Muchos sistemas operativos adaptan
automticamente el tamao del buffer
Un buffer muy chico puede limitar la tasa de
transmisin (cmo?)
Si la aplicacin no lee los datos suficientemente
rpido, la ventana del receptor decrecer
Puede llegar a 0 si se llena todo el buffer
27
Posible bloqueo ante anuncio de
ventana de tamao 0
Problema: Se anuncia ventana 0, y
siguiente anuncio se pierde
Debe evitarse el bloqueo
Para ello, el emisor enviar un segmento que
fuerce una respuesta del receptor (prueba
para forzar re-anuncio de ventana):
Enviar un segmento con nmero de secuencia
menor al actual (y sin datos)
O enviar el prximo byte (que podra ser
descartado)
28
Manejo de ventana en TCP
29
Problemas de performance
Objetivo: evitar muchos segmentos chicos
Posibilidad de retardar el envo de reconocimiento
(hasta 500 ms) para esperar a tener datos para
transmitir (piggybacking)
Algoritmo de Nagle (en transmisor)
esperar el ack del primer segmento y mientras bufferear
se puede enviar tambin cuando se llena media ventana o el
tamao mximo del segmento
Malo en aplicaciones interactivas remotas (mouse)
Sndrome de la ventana tonta (solucin de Clark)
Aviso de ventana de 1 byte (o muy pequea)
Clark: No avisar disponibilidad de ventana hasta tener libre
segmento mximo o mitad del buffer
30
Sndrome de Ventana tonta
31
Congestin en la red
La congestin se da cuando se sobrepasa
la capacidad de algn elemento en la red
Tpicamente algn enlace o la CPU de algn
enrutador
Los efectos observados incluyen aumento
de retardo y prdidas
Si no se controla, lleva a un uso muy
ineficiente de la red
32
Ejemplo
lin
timeout
copy l'in lout
Host B
33
Congestin
R/2
No todos los
retardo
paquetes llegan. Y
lout
algunos son
duplicados!
El retardo crece
Se presentan prdidas
Se retransmiten segmentos innecesariamente
(por timeout debido al retardo)
34
Control de congestin
No mandar ms datos que los que la red
puede aceptar
Complementario al control de flujo
Idea: Entubado
Si tenemos disponible un ancho de banda B, y
el retardo de ida y vuelta es 2T, queremos
mandar:
V = B*2T
Problema: Cmo conocer B
35
Control de congestin en TCP
Hiptesis: las prdidas de paquetes son
por congestin (los enlaces son buenos)
Problema en enlaces inalmbricos con muchas
prdidas
El transmisor maneja una ventana de
congestin, que actualiza dinmicamente
de acuerdo a las condiciones de la red
Mantiene tambin un valor "Umbral"
El transmisor no permite que haya en
trnsito ms bytes que los que indica la
ventana de congestin 36
Manejo de la Ventana de
congestin
Llamamos cwnd al tamao de la ventana
Se define tambin un tamao de umbral
(ssthresh)
Iremos variando el tamao cwnd
Se identifican 2 perodos bien definidos:
Slow start: al comienzo, al no conocer la capacidad
disponible, se comienza con una ventana chica pero
se hace crecer rpidamente
Congestion Avoidance: al (posiblemente) acercarnos
a la congestin, hacemos crecer despacio la ventana
Ante prdidas, bajamos drsticamente la tasa de
transmisin (disminuyendo la ventana)
37
Slow start
Valor inicial de cwnd = 1 MSS
Versiones modernas suelen comenzar con un tamao
un poco ms grande
Por cada byte reconocido, agrega 1 byte a la
ventana (a cwnd)
Al reconocerse toda la ventana enviada, esta se
duplica
Si tenemos prdidas, bajamos el valor de cwnd
Comportamiento se mantiene hasta que cwnd
llega al valor del umbral (ssthresh)
38
Ventana de congestin (slow start)
cwnd[n] = cwnd [n-1] + [Nmero de bytes ACK]
39
Congestion Avoidance
A partir del umbral se asume que
podemos estar ms cerca de la congestin
se incrementa cwnd de forma lineal
Se aumenta en 1 segmento por cada ventana
completa reconocida
Si no hay prdidas, podramos crecer
indefinidamente
Usualmente nos termina limitando la ventana
del receptor
40
Ventana de congestin
(congestion avoidance)
cwnd [n] = cwnd [n-1] + (MSS/cwnd[n-1]) x
[Nmero de bytes ACK]
41
Comportamiento ante prdidas
Timeout:
fijar umbral (ssthresh) a la mitad del valor de
la ventana actual (NO a la mitad del umbral
actual)
Bajar la ventana (cwnd) a 1 segmento
Retomar en fase slow start
42
Ventana de congestin (timeout)
cwnd = 1 MSS
ssthresh[n] = cnwd [ n-1] /2 (la ltima ventana)
43
Comportamiento ante prdidas
Reconocimientos repetidos:
fijar umbral a la mitad del valor de la ventana
actual
Bajar cwnd al valor del umbral (TCP Reno)
Se siguen recibiendo segmentos, as que se asume
que la congestin no es tan importante
44
Ventana de congestin (prdidas)
45
Ventana de Congestin
Todo los segmentos de forma
instantnea (idealizacin cuando el tiempo
de serializacin es mucho menor que el
valor de RTT).
Observar que el comportamiento esta
basado en RTT, que vara dinmicamente.
Cmo elijo el valor de los
temporizadores para los timeout?
46
Variantes modernas
Opcionalmente se agrega el uso de
reconocimientos selectivos
Permite retransmitir solo lo que se perdi
Se estn investigando nuevas maneras de
realizar el control de congestin
Eficiencia
Equidad en el reparto de recursos
Problemas para capacidades elevadas en la
red
47
Otras opciones "modernas"
Window Scale: ventana mxima de 64 KB
(representada en 16 bits) qued chica
Calculen la velocidad mxima de transmisin en
un enlace de 1Gbps y 100ms de RTT con una
ventana de receptor de 64 KB
Opcin "escala de ventana: indica cuantos bits
"0" agregar a la derecha del valor de buffer
SACK (Reconocimiento selectivo)
Permite indicar qu segmentos se recibieron
correctamente posteriores al indicado en el
campo ACK del segmento 48
Re-uso de los nmeros de
secuencia
Enlace de 56 Kbps -> los nmeros de secuencia
se reutilizan en 3.6 das
1 Gbps -> se reutilizan en 17 segundos!!
Tiempo de vida mximo asumido por TCP de un
paquete en la red: 120 Segundos!
Solucin: Se utiliza el nmero de secuencia junto
con una opcin Timestamp para detectar
duplicados viejos
Receptor debe verificar que el valor de timestamp sea
montono creciente, descartando segmentos antiguos
Timestamp tambin sirve para mejorar el clculo del
RTT
49
Gestin de temporizadores
Varios temporizadores
el ms importante es el de retransmisin
Jacobson:
RTT[n] = a RTT[n-1] + ( 1 - a ) M[n] a = 7/8
D[n] = b D[n-1] + (1 b) |RTT[n-1] M[n]| b = 3/4
Timeout = RTT + 4 * D
Variantes agregadas por Karn:
No calcular sobre retransmisiones
Se duplica el timeout a cada prdida
Moderno: se utiliza la opcin Timestamp para
mejorar el clculo del RTT
Maneja varios temporizadores ms
50
UDP
Servicio de datagramas
No orientado a conexin
Solo se agrega:
Suma de comprobacin
Puertos de origen y destino, para multiplexar
diversas aplicaciones
51
Formato del segmento UDP
Brinda servicios no orientados a conexin
Bsicamente es un paquete IP con un
encabezado mnimo de capa de transporte
Datos (opcional)
32 bits
52