You are on page 1of 21

Capítulo 3: Capa Transporte - III

ELO322: Redes de Computadores


Tomás Arredondo Vidal

Este material está basado en:


❒ material de apoyo al texto Computer Networking: A Top Down
Approach Featuring the Internet 3rd edition. Jim Kurose, Keith Ross
Addison-Wesley, 2004.

❒ material del curso anterior ELO322 del Prof. Agustín Gonzales

Capa Transporte 3-1


Capítulo 3: Continuación
❒ 3.1 Servicios de la ❒ 3.5 Transporte orientado
capa transporte a la conexión: TCP
❒ 3.2 Multiplexing y ❍ Estructura de un segmento
demultiplexing ❍ Transferencia confiable de
❒ 3.3 Transporte sin datos
conexión: UDP ❍ Control de flujo
❒ 3.4 Principios de ❍ Gestión de la conexión
transferencia ❒ 3.6 Principios del control
confiable de datos de congestión
❒ 3.7 Control de congestión
en TCP

Capa Transporte 3-2


TCP: Generalidades RFCs: 793, 1122, 1323, 2018, 2581
❒ Punto-a punto: ❒ Transferencia full duplex
❍ Un Tx y un Rx (dos sentidos):
❒ confiable, en orden flujo de ❍ Flujo de datos bi-
bytes: direccionales en la misma
conexión
❍ no hay “límites del
inicio/término de mensaje” ❍ MSS: maximum segment
size
❒ Usa un pipeline:
❒ Orientado a la conexión:
❍ El tamaño de la ventana TCP
es definido por el control de ❍ handshaking (intercambio
congestión y control de flujo de mensajes de control)
inicializa al Tx y Rx antes
❒ Usa buffer en Tx & Rx del intercambio de datos
❒ Usa control de flujo:
application application ❍ Tx no sobrecargará al Rx
writes data reads data
socket socket
door door
TCP TCP
send buffer receive buffer
segment
Capa Transporte 3-3
Estructura de un segmento TCP
32 bits
URG: urgent data
(generalmente no usado) # puerto origen # puerto dest. Cuenta bytes
de datos
ACK: mensaje Número de secuencia (no segmentos)
es ACK válido Número de acknowledgement
PSH: push data now largo No
UA P R S F Ventana receptor # bytes
(entregar datos a aplic. head usado
ahora – gen. no usado) checksum Puntero dato urgente El Rx está
dispuesto a
RST, SYN, FIN: Opciones (largo variable) aceptar
Establecimiento de
conexión
(comandos de inicio Datos de la Usado para
y cierre) aplicación negociar MSS
o para factor
checksum (largo variable)
de escalamiento
(como en UDP) ventana

Capa Transporte 3-4


Ejemplo: Uso de # de sec. y ACKs en
Telnet (Telnet usa TCP)
# de Sec.: Escenario Telnet simple
❍ “número” del byte Con conexión ya establecida
dentro del flujo
correspondiente al Host A Host B
primer byte del User Seq=4
segmento de datos escribe
2, AC
K =79, d
ata = ‘C’
ACKs: ‘C’
host acusa
❍ # sec. del próximo recibo de
byte esperado desde data = ‘
C’ ‘C’ y envía
43,
el otro lado 79, ACK
= eco de ‘C’
S eq=
❍ ACK es acumulativo
Q: ¿Cómo el receptor host acusa
tiempo
maneja segmentos fuera recibo de Seq=4
de orden? eco ‘C’ 3, ACK
=80
❍ R: la especificación de
TCP lo deja a criterio
del implementador
Capa Transporte 3-5
Round Trip Time y Timeout en TCP
Q: ¿Cómo fijar Q: ¿Cómo estimar el
valor de timeout RTT?
en TCP? ❒ SampleRTT: mide tiempo
❒ Mayor que RTT desde tx del segmento
❍ pero RTT varía
hasta recibo de ACK
❒ Muy corto: timeout ❍ Ignora retransmisiones
prematuro ❒ SampleRTT varía, hay que
❍ Retransmisiones suavizar el RTT estimado
innecesarias ❍ Promediar varias
❒ Muy largo: lenta medidas recientes, no
reacción a pérdidas considerar sólo el último
de segmentos SampleRTT

Capa Transporte 3-6


Round Trip Time y Timeout en TCP
EstimatedRTT = (1- α)*EstimatedRTT + α*SampleRTT

❒ Promedio móvil ponderado exponencial


❒ Influencia de las muestras pasadas decrece
exponencialmente rápido
❒ Valor típico: α = 0.125 = (1/8) = 3 right shifts

Capa Transporte 3-7


Ejemplo de estimación de RTT:
RTT: gaia.cs.umass.edu to fantasia.eurecom.fr

350

300

250
RTT (milliseconds)

200

150

100
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)

SampleRTT Estimated RTT

Capa Transporte 3-8


Round Trip Time y Timeout en TCP
Definición del timeout
❒ EstimatedRTT más un “margen de seguridad”
❍ Si hay gran variación en EstimatedRTT -> usar gran margen
❒ Primero estimamos cuánto el SampleRTT se desvía del
EstimatedRTT:

β)*DevRTT + β*|SampleRTT-EstimatedRTT|
DevRTT = (1-β

(typically, β = 0.25)

Entonces fijamos el timeout como:

TimeoutInterval = EstimatedRTT + 4*DevRTT

Capa Transporte 3-9


Capítulo 3: Continuación
❒ 3.1 Servicios de la ❒ 3.5 Transporte orientado
capa transporte a la conexión: TCP
❒ 3.2 Multiplexing y ❍ Estructura de un segmento
demultiplexing ❍ Transferencia confiable de
❒ 3.3 Transporte sin datos
conexión: UDP ❍ Control de flujo
❒ 3.4 Principios de ❍ Gestión de la conexión
transferencia ❒ 3.6 Principios del control
confiable de datos de congestión
❒ 3.7 Control de congestión
en TCP

Capa Transporte 3-10


Transferencia confiable de datos
en TCP
❒ TCP crea un servicio ❒ Retransmisiones son
de transferencia activadas por:
confiable sobre el ❍ Eventos timeout
servicio no confiable ❍ Acks duplicados
de IP ❒ Inicialmente
❒ Usa segmentos en consideremos un Tx
pipeline TCP simplificado:
❒ Acks acumulativos ❍ ignora acks duplicados
❍ ignora control de flujo y
❒ TCP usa un timer de
control de congestión
retransmisión único

Capa Transporte 3-11


Eventos del transmisor en TCP:
Datos recibidos desde Timeout:
aplicación: ❒ Retransmitir el segmento
❒ Crea segmemto con # de sec. que causó el timeout
❒ # sec es el número dentro ❒ Tipicamente el intervalo del
del flujo para el primer byte timeout se duplica en
del segmento retransmisiones. Porque?
❒ Inicia timer si no está ya ❒ Re-iniciar el timer
corriendo (asociar el timer al Recepción de Ack:
segmento más viejo sin acuse ❒ Si es el ack de un segmento
de recibo) previo sin acuse de recibo
❒ Tiempo de expiración: ❍ Actualizar estado sobre
TimeOutInterval acuses recibidos
❍ Iniciar timer si hay
segmentos sin acuses de
recibo.

Capa Transporte 3-12


NextSeqNum = InitialSeqNum
SendBase = InitialSeqNum
Tx TCP
loop (forever) {
switch(event) (simplificado)
Comentarios:
event: datos recibidos desde la aplicación
• En ejemplo la
Crear segmento TCP con número de sec. NextSeqNum
if (timer actualmente no está corriendo)
transmisión en una
iniciar timer dirección solamente
pasar segmento a IP • SendBase-1: último
NextSeqNum = NextSeqNum + length(data) byte con ACK
break; • SendBase : primer
byte sin ACK
event: timeout del timer • y : indica ACK de
retransmitir segmento con menor # de sec. sin acuse
todos los bytes antes
iniciar timer
break;
del byte numero y
Ejemplo:
event: recepción de ACK con campo ACK de valor y • SendBase = 72;
if (y > SendBase) { y = 73, el Rx quiere
SendBase = y bytes 73 en adelante
if (hay segmentos sin acuse de recibo aún) • como y > SendBase,
iniciar timer llegó acuse de recibo
}
de nuevo dato (72)
} /* end of loop forever */ Capa Transporte 3-13
TCP: escenarios de retransmisión
Host A Host B Host A Host B

Seq=9 Seq=9
2, 8 b 2, 8 b
yt es dat ytes d
ata

Seq=92 timeout
a Seq=
100,
20 by
tes da
timeout

ta
CK =100
A 0
10
X CK=
A AC K =120
loss
Seq=9 Seq=9
2, 8 b 2, 8 b
yt es dat Sendbase yt es dat
a a
= 100

Seq=92 timeout
SendBase
= 120 0
K=12
CK=100 AC
A

SendBase
= 100 SendBase
= 120 Timeout prematuro
time time
Pérdida de ACK
Capa Transporte 3-14
TCP escenarios de retransmisión
(más)
Host A Host B

Seq=9
2, 8 b
yt es dat
a

timeout Seq=1 CK =100


00, 20 A
bytes
data
X
loss

SendBase CK=120
A
= 120

time
ACK acumulado

Capa Transporte 3-15


Generación de ACK en TCP [RFC 1122,
RFC 2581]

Evento en Receptor TCP acción del receptor


Llegada de segmento en orden con ACK retardado. Espera hasta 500ms
# sec. esperado. Ya se envió el por próximo segmento. Si no llega
ACK de todo lo previo. otro segmento enviar ACK

Llegada de segmento en orden con Enviar inmediatamente un ACK acumulado


# sec. esperado. Algún segmento se da acuse así a ambos segmentos
tiene ACK pendiente en orden.

Llegada de segmento fuera de orden Enviar inmediatamente un ACK duplicado,


con # sec. mayor al esperado. indicando # sec. del próximo byte esperado
Se detecta un vacío.

Llegada de segmento que llena el Enviar inmediatamente un ACK si es que


vacío parcialmente o completamente segmento se ubica al inicio del vacío de
segmentos recibidos
Capa Transporte 3-16
Retransmisiones Rápidas
❒ Periodo de Time-out es ❒ Si Tx recibe 3 ACKs de
a menudo largo: un mismo dato, éste
❍ Largo retardo antes de supone que el segmento
re-envío de paquetes después de este dato se
perdidos perdió:
❒ Se detecta paquetes ❍ Retransmisiones rápidas:
perdidos vía ACKs reenviar el segmento
duplicados. antes que el timer expire.
❍ Tx a menudo envía
muchos segmentos
seguidos
❍ Si un segmento es
perdido, probablemente
habrá muchos ACKs
duplicados.
Capa Transporte 3-17
Algoritmo de retransmisión rápida:

event: Llega ACK, con campo ACK de valor y


if (y > SendBase) {
SendBase = y
if (hay segmentos sin acuse de recibo aún)
iniciar timer
}
else { // y==SendBase
incrementar cuenta de ACKs de y duplicados
if (cuenta de ACKs de y duplicados = 3) {
re-enviar segmento con # de secuencia y
}

ACK duplicado de un Retransmisión rápida


segmento con ACK
recibido
Capa Transporte 3-18
Timeout en TCP
Doblando el tiempo del timeout
❒ Algunas modificaciones que muchas implementaciones de
TCP implementan
❒ La primera concierne el largo de tiempo del intervalo del
timeout después que el timer expira
❒ En esta modificación cuando ocurre un timeout TCP
retransmite el segmento sin ACK con el numero menor de
secuencia pero para cada retransmisión TCP duplica el valor
previo de TimeoutInterval
❒ De esta forma los intervalos crecen exponencialmente
después de cada retransmisión
❒ Si se recibe otro evento como datos recibidos de la
aplicación o ACK recibido entonces se recalcula
TimeoutInterval usando EstimatedRTT y DevRTT
❒ Esta es una forma limitada de control de congestión

Capa Transporte 3-19


Timeout en TCP
Doblando el tiempo del timeout
1 segmento perdido
timeout se duplica
Tasa de envío de TCP

tiempo

Capa Transporte 3-20


Capítulo 3: Continuación
❒ 3.1 Servicios de la ❒ 3.5 Transporte orientado
capa transporte a la conexión: TCP
❒ 3.2 Multiplexing y ❍ Estructura de un segmento
demultiplexing ❍ Transferencia confiable de
❒ 3.3 Transporte sin datos
conexión: UDP ❍ Control de flujo
❒ 3.4 Principios de ❍ Administración de conexión
transferencia ❒ 3.6 Principios del control
confiable de datos de congestión
❒ 3.7 Control de congestión
en TCP

Capa Transporte 3-21

You might also like