Documentos de Académico
Documentos de Profesional
Documentos de Cultura
T6 Transporte PDF
T6 Transporte PDF
Telecomunicaciones
Redes de Ordenadores
1. Modelo Genérico.
2. Clasificación de las Redes de Telecomunicaciones.
3. Estructura de Internet.
4. Retardos en Redes de Telecomunicaciones.
5. Modelo de Referencia TCP/IP.
Nivel de Transporte:
Introducción, UDP y TCP
1.1. ¿Qué es una Red de Telecomunicaciones?
Es una Infraestructura.
Proporciona comunicación entre múltiples entidades.
De una manera eficiente.
Usando distintas tecnologías (eléctricas, electrónicas,
electromagnéticas, ópticas,…)
Sistemas de
FUENTE Transmisor Transm Receptor DESTINO
2
Objetivos
Conceptos y principios del nivel de transporte
TEMA 1: Introducción a las Redes de
‣ Telecomunicaciones
1. Modelo Genérico.
> Multiplexación
2. Clasificación de las Redes de Telecomunicaciones.
3. Estructura de Internet.
4. Retardos en Redes de Telecomunicaciones.
5. Modelo de Referencia TCP/IP.
Sistemas de
FUENTE Transmisor Transmisión Receptor DESTINO
2
Funciones del nivel de transporte
Comunicación lógica
TEMA 1: Introducción Transporte
a las Redes de
‣ Telecomunicaciones
Red
entre aplicaciones 1.
2.
3.
4.
Modelo Genérico.
Clasificación de las Redes de Telecomunicaciones.
Estructura de Internet.
Retardos en Redes de Telecomunicaciones. Enlace
‣
extremos (end-to-end) Red
Red Enlace
> segmentación
Enlace
> reensamblado Red
‣ 2 niveles de transporte en
1.1. ¿Qué es una Red de Telecomunicaciones?
Red Enlace
Internet
Es una Infraestructura.
Proporciona comunicación entre múltiples entidades.
De una manera eficiente.
Enlace
2
Red y transporte
Nivel de red
TEMA 1: Introducción a las Redes de
‣ Telecomunicaciones
1. Modelo Genérico.
‣ Nivel de transporte
Comunicación lógica entre procesos
> mejora y utiliza la comunicación entre hosts
App 1 App 1
1.1. ¿Qué es una Red de Telecomunicaciones?
Es una Infraestructura.
Transporte Proporciona comunicación entre múltiples entidades. Transporte
De una manera eficiente.
Usando distintas tecnologías (eléctricas, electrónicas,
electromagnéticas, ópticas,…)
(UDP)
Es una Infraestructura.
Proporciona comunicación entre múltiples entidades.
De una manera eficiente.
Usando distintas tecnologías (eléctricas, electrónicas,
Red Enlace
Enlace
> best-effort igual que IP electromagnéticas, ópticas,…)
>
2
Enlace
> ancho de banda no garantizado
Funciones TCP/UDP
Función común
TEMA 1: Introducción a las Redes de
‣ Telecomunicaciones
1. Modelo Genérico.
Multiplexación/demultiplexación de
2. Clasificación de las Redes de Telecomunicaciones.
3. Estructura de Internet.
4. Retardos en Redes de Telecomunicaciones.
5. Modelo de Referencia TCP/IP.
aplicaciones
2
Multiplexación y demultiplexación
‣ Un host con varias aplicaciones/programas/
TEMA 1: Introducción a las Redes de
> El nivel de red envía los paquetes al nivel de red del ordenador destino
3.
4.
5.
Estructura de Internet.
Retardos en Redes de Telecomunicaciones.
Modelo de Referencia TCP/IP.
Emisor:
Receptor:
‣ recoger datos de distintas fuentes
Sistemas de
FUENTE Transmisor Transmisión Receptor DESTINO
‣ entregar a la
‣ encapsular con información del
Sistema Origen Sistema Destino
aplicación (socket)
origen
2
correcta
Multiplexación y demultiplexación
El host recibe datagramas IP
TEMA 1: Introducción a las Redes de
‣ Telecomunicaciones
1. Modelo Genérico.
Cabecera IP
> Cada datagrama IP lleva un
segmento del nivel de transporte ...
> Cada segmento del niel de puerto origen puerto destino
transporte lleva un puerto origen y
destino (puerto: identificador de cabecera de transporte
proceso/aplicación)1.1. ¿Qué es una Red de Telecomunicaciones?
‣ Datos aplicación
Proporciona comunicación entre múltiples entidades.
De una manera eficiente.
Usando distintas tecnologías (eléctricas, electrónicas,
‣ Se extraen de la cabecera
1. Modelo Genérico.
2. Clasificación de las Redes de Telecomunicaciones.
3. Estructura de Internet.
4. Retardos en Redes de Telecomunicaciones.
de la cabecera UDP el
puerto destino
80 6881 1234
‣ Se entregan los datos al sockets
socket identificado por la S1 S2 S3
tupla 1.1. ¿Qué es una Red de Telecomunicaciones?
UDP
Es una Infraestructura.
(dirIP destino, puerto destino)
Proporciona comunicación entre múltiples entidades.
De una manera eficiente.
Usando distintas tecnologías (eléctricas, electrónicas,
Paquetes provenientes de
electromagnéticas, ópticas,…)
‣
diferentes direcciónes origen y Sistemas de
mismo socket 2
Demultiplexación no orientada a conexión
Ejemplo
TEMA 1: Introducción a las Redes de
‣ Telecomunicaciones SP: source port
1.
2.
Modelo Genérico.
Clasificación de las Redes de Telecomunicaciones.
DP: destination port
3. Estructura de Internet.
4. Retardos en Redes de Telecomunicaciones.
5. Modelo de Referencia TCP/IP.
P2 P1
P1
P3
client Client
De una manera eficiente.
server
Usando distintas tecnologías (eléctricas, electrónicas,
electromagnéticas, ópticas,…)
responder al cliente
2
/ 11
Demultiplexación orientada a conexión
23421 80 23421
CNX establecida CNX establecida
S4 S12y3 S5
1.1. ¿Qué es una Red de Telecomunicaciones?
TCP TCP TCP
Es una Infraestructura.
Proporciona comunicación entre múltiples entidades.
De una manera eficiente.
Usando distintas tecnologías (eléctricas, electrónicas,
electromagnéticas, ópticas,…)
Sistemas de
FUENTE Transmisor Receptor DESTINO
Ejemplo
TEMA 1: Introducción a las Redes de
‣ Telecomunicaciones
SP: source port
S-IP: source IP
1. Modelo Genérico.
2. Clasificación de las Redes de Telecomunicaciones.
3. Estructura de Internet.
4.
5.
Retardos en Redes de Telecomunicaciones.
Modelo de Referencia TCP/IP. DP: destination port
D-IP: destination IP
P1 P4 P5 P6 P2 P1P3
SP: 5775
1.1. ¿Qué es una Red de Telecomunicaciones?
DP: 80
S-IP: B
Es una Infraestructura.
D-IP:C
Proporciona comunicación entre múltiples entidades.
De una manera eficiente.
Usando distintas tecnologías (eléctricas, electrónicas,
electromagnéticas, ópticas,…)
S-IP: A S-IP: B
IP: A Sistema Origen
IP: C
Sistema Destino
IP:B
D-IP:C 2
D-IP:C
1
Demultiplexación orientada a conexión
Otro ejemplo
TEMA 1: Introducción a las Redes de
‣ Telecomunicaciones
SP: source port
S-IP: source IP
1. Modelo Genérico.
2. Clasificación de las Redes de Telecomunicaciones.
3. Estructura de Internet.
4.
5.
Retardos en Redes de Telecomunicaciones.
Modelo de Referencia TCP/IP. DP: destination port
D-IP: destination IP
P1 P4 P2 P1P3
SP: 5775
1.1. ¿Qué es una Red de Telecomunicaciones?
DP: 80
S-IP: B
Es una Infraestructura.
D-IP:C
Proporciona comunicación entre múltiples entidades.
De una manera eficiente.
Usando distintas tecnologías (eléctricas, electrónicas,
electromagnéticas, ópticas,…)
S-IP: A S-IP: B
IP: A Sistema Origen
IP: C
Sistema Destino
IP:B
D-IP:C 2
D-IP:C
1
UDP: User Datagram Protocol
UDP: User Datagram Protocol (RFC-768)
TEMA 1: Introducción a las Redes de
‣ Telecomunicaciones
1. Modelo Genérico.
‣ 3.
4.
5.
Estructura de Internet.
Retardos en Redes de Telecomunicaciones.
Modelo de Referencia TCP/IP.
No orientado a conexión
Usando distintas tecnologías (eléctricas, electrónicas,
‣
electromagnéticas, ópticas,…)
estado) 2
UDP
¿Por qué un protocolo como UDP?
TEMA 1: Introducción a las Redes de
Telecomunicaciones
1. Modelo Genérico.
‣ Poco overhead
Es una Infraestructura.
Proporciona comunicación entre múltiples entidades.
De una manera eficiente.
Usando distintas tecnologías (eléctricas, electrónicas,
...
3. Estructura de Internet.
4. Retardos en Redes de Telecomunicaciones.
5. Modelo de Referencia TCP/IP.
segmento UDP
UDP
> 8 - 65535 bytes 1.1. ¿Qué es una Red de Telecomunicaciones?
Datos aplicación
‣ checksum
Es una Infraestructura.
Proporciona comunicación entre múltiples entidades.
De una manera eficiente.
sólo 8 bytes de
Usando distintas tecnologías (eléctricas, electrónicas,
electromagnéticas, ópticas,…)
2
UDP: checksum 32 bits
+ segmento UDP
Es una Infraestructura.
Proporciona comunicación entre múltiples entidades.
De una manera eficiente.
Usando distintas tecnologías (eléctricas, electrónicas,
‣
(aunque no todos) FUENTE Transmisor
Sistemas de
Transmisión Receptor DESTINO
‣ 2
recibido no lo entrega
UDP
En que se usa UDP ?
TEMA 1: Introducción a las Redes de
Telecomunicaciones
1. Modelo Genérico.
‣
De una manera eficiente.
Usando distintas tecnologías (eléctricas, electrónicas,
electromagnéticas, ópticas,…)
Juegos en red
Transmisión
t_envia(datos)
t_recibe(datos)
Nivel de
Transporte
r_envia(datos) r_recibe(datos)
Nivel de Red
Entrega no garantizada
se pueden perder datos
Protocolo de transporte fiable
‣ Descripción con máquinas de estados finitos. Notación
Un Otro
estado estado
Una transición
Evento que causa la transición
r_recv(datos) == ACK
Receptor r_recibe(p) sin error
datos= extrae(p)
t_recibe(datos)
r_envia(ACK)
Protocolo con número de secuencia
‣ Estados del emisor
t_envia(datos)
p= paquete(datos,0) r_recibe(datos)
r_envia(p) con error o ack 1
r_envia(p)
Espera
Espera
datos
ACK 0
app 0
r_recibe(datos)
r_recibe(datos) sin error y ack 0
sin error y ack 1
Espera
Espera
datos
ACK 1
app 1
r_recibe(datos)
con error o ack 0 t_envia(datos)
r_envia(p) p= paquete(datos,1)
r_envia(p)
Protocolo con número de secuencia
‣ Podemos eliminar los
NACKs
> En lugar de un ACK enviamos ACK
y la secuencia del siguiente paquete s0
ack1
que esperamos recibir
s1
> En lugar de un NACK enviamos ack0
ACK y la secuencia del siguiente s0
paquete que esperamos recibir ack0
> El emisor sabe que tiene que s0
reenviar si recibe el ACK del ack1
paquete que no espera
‣ Problema pendiente:
¿Qué pasa si se pierde un
paquete?
Pérdidas de paquetes
‣ Si se pierde un paquete el emisor se queda
bloqueado en un estado
‣ Para romper el bloqueo usamos un
temporizador en el emisor
> Al enviar un paquete de datos ponemos en marcha un temporizador
> Si transcurrido un tiempo, no se ha recibido ACK (TIMEOUT),
reenviamos el paquete
‣ El receptor no se modifica
Protocolo con timeout
‣ Emisor con t_envia(datos) r_recibe(datos)
retransmisión por
con error o ack 1
p= paquete(datos,0)
r_envia(p)
timeout inicia_temp()
timeout
Espera r_envia(p)
Espera
datos inicia_temp()
ACK 0
app 0
r_recibe(datos)
r_recibe(datos) sin error y ack 0
sin error y ack 1
para_temp()
para_temp()
Espera
Espera
timeout datos
ACK 1
app 1
r_envia(p)
inicia_temp()
t_envia(datos)
r_recibe(datos) p= paquete(datos,1)
con error o ack 0 r_envia(p)
inicia_temp()
Ejemplos Emisor
r_send(paq0) paq0
Receptor
r_recv(paq0)
Emisor Receptor ack0 r_send(ack0)
r_send(paq0) paq0 r_recv(ack0)
r_recv(paq0) r_send(paq1) paq1 perdido
ack0 r_send(ack0)
r_recv(ack0)
r_send(paq1) paq1
r_recv(paq1)
ack1 r_send(ack1) timeout paq1
r_recv(ack1) r_send(paq1)
paq0 r_recv(paq1)
r_send(paq0)
ack1 r_send(ack1)
r_recv(paq0) r_recv(ack1)
ack0 paq0
r_send(ack0) r_send(paq0)
r_recv(paq0)
ack0
r_send(ack0)
Operación normal
Pérdida de paquete
1
Ejemplos Emisor
r_send(paq0) paq0
Receptor
Emisor Receptor r_recv(paq0)
r_send(paq0) paq0 ack0 r_send(ack0)
r_recv(ack0)
r_recv(paq0)
ack0 r_send(paq1) paq1
r_send(ack0)
r_recv(ack0)
r_send(paq1) paq1
r_recv(paq1) r_recv(paq1)
ack1 ack1 r_send(ack1)
r_send(ack1)
perdido timeout paq1
r_send(paq1)
timeout
paq1 r_recv(ack1) paq0 r_recv(paq1)
r_send(paq1) r_recv(paq1) r_send(paq0) (detecto duplicado)
ack1 r_send(ack1) r_send(ack1)
r_recv(ack1) ack1
paq0 r_recv(ack1)
r_send(paq0) ignorado
r_recv(paq0) ack0
ack0 r_send(ack0)
1
Prestaciones
‣ El protocolo anterior es fiable pero es muy poco
eficiente
‣ Ejemplo:
Enlace de 1Gbps con un retardo de 15ms (4500Km),
paquetes de 1000 bytes
A que velocidad puedo enviar?
RoundTripTime
=30ms
tam 8000bits
v= = = 266Kbps
RoundTripTime .03s 0.026% !! :-(
Protocolos más eficientes
‣ Para aumentar la eficiencia, se envían varios
paquetes mientras llega el ACK
Varios paquetes en la red por confirmar
> Se usan más números de secuencia que 0 y 1
> Emisor y receptor necesitarán buffer para varios paquetes
> Varias políticas para reaccionar a los errores
+ Go-Back N Emisor Receptor
paq 0
+ Selective reject paq 1 ack 0
paq 2
paq 3
Go back-N
‣ Se utiliza número de secuencia en el paquete
‣ Se permite una ventana de N paquetes sin
confirmar
‣ Cada ACK confirma todos los paquetes
anteriores (cumulative ACK)
‣ Cada paquete inicia su propio timeout
‣ Si caduca el timeout de un paquete se
retransmiten todos los siguientes
Go back-N
‣ Ventana deslizante
enviados se pueden
no ACKed enviar
transmitidos no se pueden
ACKed Ventana de N paquetes enviar
pueden enviarse
nuevos paquetes
transmitidos no se pueden
ACKed Ventana de N paquetes enviar
‣ Ventana deslizante del receptor
recibidos y confirmados
esperados en espera de poder entregarse
aceptables
confirmados no aceptables
y entregados Ventana de N paquetes fuera de la ventana
Selective reject
Ventana de 4 paquetes Emisor Receptor
paq 0
paq 1 ack 0
paq 2 ack 1
paq 3
paq 4 ack 3
paq 5 ack 4
ack 5
timeout
paq 2
ack 2
paq 5
...
El problema del selective reject
0 1 2 3 0 1 2 3
‣ Número de secuencia 0 1 2 3 0 1 2 3
0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3
finito 0 1 2 3 0 1 2 3
0 1 2 3 0 1 2 3
‣ Ejemplo
> seq= {0,1,2,3} 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3
> N=3
paq duplicado
‣ El receptor no puede entregado !!!
notar la diferencia entre
los dos escenarios 0 1 2 3 0 1 2 3
0 1 2 3 0 1 2 3
0 1 2 3 0 1 2 3
‣ Y entrega datos 0 1 2 3 0 1 2 3
0 1 2 3 0 1 2 3
duplicados como buenos 0 1 2 3 0 1 2 3
entre #secuencia y N? 0 1 2 3 0 1 2 3
0 1 2 3 0 1 2 3
0 1 2 3 0 1 2 3
paq correcto
entregado
TCP
‣ Protocolo de transporte de Internet (RFC 793)
‣ Transporte fiable
> Entrega garantizada
> Entrega en orden
‣ Orientado a conexión
> Stream bidireccional (como si fuera un fichero) entre los dos
extremos
> No mantiene las fronteras de los mensajes
‣ Con control de flujo y congestión
TCP
‣ Interfaz con el nivel de aplicación
> Tras establecer una conexión proporciona un stream bidireccional entre sockets
> Sin fronteras entre mensajes
> 2 buffers por conexión
+ Escribir en el socket pone los datos en buffer de envio
+ Buffer de recepción para esperar el read()
TCP TCP
connexión
connexión
connexión
connexión connexión
connexión
IP IP IP IP
TCP
‣ Demultiplexación de datos que llegan a TCP:
> Se identifica al socket destino por la tupla
( IP origen, puerto origen, IP destino, puerto destino )
> La tabla de tuplas (ip,puerto,ip,puerto) con sus sockets de un nivel TCP es la tabla
de conexiónes.
TCP connexión
TCP
connexión
connexión Tabla de connexión
connexión
conexiones
IPB, puertoB1, IPA, puertoA1 : cnx1 IPA, puertoA1, IPB, puertoB1 : cnx1
IPB, puertoB3, IPA, puertoA2 : cnx2
IPX, puertoP , IPA, puertoA3 : cnx3
Paquete a IPB IPA, puertoA2, IPB, puertoB3 : cnx2
...
puertoB3
recibido paquete
Cabecera TCP
obligatorios
> 20 hasta 60 bytes según las numero secuencia
opciones
20 bytes
numero ack
‣ Datos del nivel de HL nada flags ventena recep.
aplicación checksum urgent data ptr
opciones
Datos aplicación
TCP
Contenido Cabecera IP
‣ Datos de ...
multiplexación puerto origen puerto destino
> Puerto origen numero secuencia
> Puerto destino numero ack
HL nada flags ventena recep.
checksum urgent data ptr
opciones
Datos aplicación
TCP
Contenido Cabecera IP
‣ Datos para transporte ...
fiable puerto origen puerto destino
> Número de secuencia numero secuencia
> Número de ACK numero ack
> Checksum HL nada flags ventena recep.
Cabecera + datos de applicación + checksum urgent data ptr
algunos datos de IP (pseudo cabecera
como en UDP) opciones
‣ En un mismo paquete
podemos mandar datos y Datos aplicación
confirmar datos del
sentido contrario
TCP
Contenido Cabecera IP
‣ FLAGs: diferentes tipos ...
de paquetes del puerto origen puerto destino
protocolo numero secuencia
> URG urgente numero ack
> ACK acknowledgement HL nada flags ventena recep.
checksum urgent data ptr
> PSH push
> RST reset opciones
> SYN syn
Datos aplicación
> FIN fin
TCP
Contenido Cabecera IP
‣ Control de flujo ...
> ventana de recepción puerto origen puerto destino
numero secuencia
‣ Datos urgentes numero ack
‣ HL (header length) HL nada flags ventena recep.
> Tamaño de la cabecera (en checksum urgent data ptr
palabras de 4 bytes)
opciones
> 4 bits de de 5 a 15 palabras
de 20 a 60 bytes Datos aplicación
‣ Opciones extras
TCP
‣ Permiten especificar operaciones y tipos de
paquetes que se han ido añadiendo
posteriormente al protocolo
‣ Las opciones se colocan seguidas. 2 formatos
> opciones de 1 byte tipo
‣ Opciones básicas
> Fin-de-la-lista de opciones 00000000
seq # =17
on a enviar al otro extremo... y n
Segmentos TCP
seq # =51
TCP: envío de datos
‣ Secuencia y ACK: campos de 32 bits
> 4 Gb de datos para dar la vuelta
> La secuencia no empieza de 0 sino que se genera al azar al principio
de cada conexión y para cada sentido
‣ El campo ACK
> es valido si esta activado el flag ACK
> indica la próxima secuencia que el receptor espera recibir
cumulative ACK: Go back N a nivel de byte
‣ Si una conexión está transmitiendo en ambos
sentidos los ACKs de un sentido van en los
paquetes de datos del opuesto piggyback
Ejemplo
‣ Paquetes de un telnet desde 10.1.1.253 a 10.1.1.22
Origen Destino
{ ip, puerto } { ip, puerto }
Datos urgentes
‣ Si URG está activado. Cabecera IP
El paquete lleva datos urgentes.
>
...
Canal de datos Out-of-band
> El puntero urgente indica donde puerto origen puerto destino
acaban los datos urgentes numero secuencia
> Los datos normales se entregan numero ack
normalmente en el buffer para la
aplicación HL nada flags ventena recep.
> Los datos urgentes se entregan aparte checksum urgent data ptr
opciones
‣ No se usa mucho
En sockets los datos Datos urgentes
urgentes hay que pedirlos
con setsockopt Datos normales
TCP: transporte fiable
‣ TCP utiliza una ventana deslizante
> Número de secuencia: el primer byte enviado en el segmento
> ACK: el próximo byte que espera recibir el receptor
‣ Los paquetes TCP llevan
> Número de secuencia de los datos. Si no llevan datos, el campo número
de secuencia indica el proximo numero de secuencia que se enviará
> Próximo número de secuencia que espera recibir su emisor. Es válido si
el byte ACK está activado
> Los números de secuencia son independientes en ambos sentidos
‣ Transmisiones simultáneas en los dos sentidos
Cada extremo funciona como un emisor y un
receptor independientes
TCP: emisor
‣ Eventos en el emisor timeout
‣ retransmitir el
Llegan datos desde el segmento que causó el
nivel de aplicacion timeout
‣ crear segmento nuevo ‣ reiniciar timeout
‣ sec # el siguiente de la
stream recibido ACK
‣ iniciar temporizador si ‣ Si confirme un
no hay uno iniciado segmento nuevo
> actualizar ventana
EcumulativE ACK
> reiniciar timeout si
quedan segmentos
por confirmar
Ejemplos
Emisor Receptor
sendbase=92
8bytes sec
Emisor Receptor =92
20bytes dat
sendbase=92 sec os
=10 8B 0
8bytes sec=92 datos 8B 10
0 d a c k
ato
ack 100 s2
timeout 0B
sec
=92
dat
os 8
sec=92 datos 8B sendbase=100 B
timeout 1 2 0
ac k
ack 100 sendbase=120
12 0
sendbase=100 a c k
sendbase=120
ACK #
> Llega segmento ya reconocido Acción: ignorar
TCP: Fast retransmit
Emisor Receptor
‣ El timeout normalmente
es relativamente largo
> Si se pierde un paquete de datos ack 100
se genera hueco y se detendrá la
transmisión durante un timeout ack 200
> Normalmente el emisor envía
varios paquetes seguidos ack 200
ack 200
‣ El receptor no puede ack 200
hacer un NACK pero ack 200
está generando ACKs
duplicados !!
timeout
TCP: Fast retransmit
Emisor Receptor
‣ Fast retransmit
> Si el emisor recibe 3 ACKs con el
mismo numero de ACK supondrá
que se ha perdido el paquete que ack 100
llevaba ese numero de secuencia ack 200
> Reenvia el paquete
inmediatamente sin esperar a que ack 200
caduque el timeout
3 dup ACKs !!! ack 200
= fast retransmit ack 200
ack 200
recibidos todos ack 700
timeout cancelado
TCP: timeout
‣ ¿Qué timeout se debe usar?
> Suficiente para que el paquete llegue a su destino y el ACK vuelva.
A este tiempo se le denomina tiempo de ida y vuelta o
Round Trip Time (RTT)
> El RTT depende de muchos factores
+ velocidad de la red
‣ Estimando el RTT
> Se toma una muestra SampleRTT por SampleRTT2
cada vez que se envía un segmento
hasta que llega su correspondiente
ACK
+ Se ignora la muestra si el segmento
se retransmite
+ Se mide con delayed acks Descartado por
(overestimation) retransmisión
+ Sólo se puede medir una muestra a SampleRTT3
la vez (1 solo timer)
y normalmente con precisión de
500ms
TCP: estimación RTT
‣ El valor medido SampleRTT varía
queremos un RTT estimado suave
> Utilizamos el promedio de varias muestras
Exponential weighted moving average
EstimatedRTT = (1- α)*EstimatedRTT + α*SampleRTT
(typically, β = 0.25)
buffer de recepción
TCP: Control de flujo
‣ TCP informa al emisor de cuanto Cabecera IP
...
buffer tiene libre en cada puerto origen puerto destino
> Esa es la función del campo ventana de HL nada flags ventena recep.
checksum urgent data ptr
recepción de la cabecera opciones
buffer de recepción
Ejemplo
‣ De una transferencia de página web
1124207801.184011 IP 130.206.169.177.53611 > 130.206.166.105.80: . ack 1 win 65535
1124207825.463815 IP 130.206.169.177.53611 > 130.206.166.105.80: P 1:39(38) ack 1 win 65535
1124207825.464062 IP 130.206.166.105.80 > 130.206.169.177.53611: . ack 39 win 24616
1124207825.466289 IP 130.206.166.105.80 > 130.206.169.177.53611: P 1:291(290) ack 39 win 24616
1124207825.466784 IP 130.206.166.105.80 > 130.206.169.177.53611: . 291:1739(1448) ack 39 win 24616
1124207825.466915 IP 130.206.166.105.80 > 130.206.169.177.53611: P 1739:3187(1448) ack 39 win 24616
1124207825.511610 IP 130.206.169.177.53611 > 130.206.166.105.80: . ack 3187 win 63422
1124207825.512278 IP 130.206.166.105.80 > 130.206.169.177.53611: . 3187:4635(1448) ack 39 win 24616
1124207825.512382 IP 130.206.166.105.80 > 130.206.169.177.53611: . 4635:6083(1448) ack 39 win 24616
1124207825.512503 IP 130.206.166.105.80 > 130.206.169.177.53611: . 6083:7531(1448) ack 39 win 24616
1124207825.512626 IP 130.206.166.105.80 > 130.206.169.177.53611: P 7531:8979(1448) ack 39 win 24616
1124207825.711709 IP 130.206.169.177.53611 > 130.206.166.105.80: . ack 8979 win 57630
1124207825.712371 IP 130.206.166.105.80 > 130.206.169.177.53611: . 8979:10427(1448) ack 39 win 24616
1124207825.712474 IP 130.206.166.105.80 > 130.206.169.177.53611: . 10427:11875(1448) ack 39 win 24616
1124207825.712595 IP 130.206.166.105.80 > 130.206.169.177.53611: . 11875:13323(1448) ack 39 win 24616
1124207825.712723 IP 130.206.166.105.80 > 130.206.169.177.53611: . 13323:14771(1448) ack 39 win 24616
1124207825.712842 IP 130.206.166.105.80 > 130.206.169.177.53611: P 14771:16219(1448) ack 39 win 24616
1124207825.911783 IP 130.206.169.177.53611 > 130.206.166.105.80: . ack 16219 win 50390
iniciarlo
> Envia un paquete sin datos con
el flag FIN. Consume tambien ACK
un numero de secuencia
> El otro extremo, confirma
enviando un ACK e indica que FIN
cierra tambien con otro FIN.
Este segundo FIN puede ir en
el mismo paquete o en otro. ACK
> El extremo original confirma FIN
con un ACK
ACK
Cierre de la conexión
&LHUUHGH&RQH[LyQ
FIN
ACK
Ejemplo
‣ El final de una conexión web...
El servidor está enviando datos
El cliente decide cerrar y manda un FIN
...
IP 130.206.166.105.80 > 130.206.169.177.53701: P 80314174:80315622(1448) ack 4067364561 win 24616
IP 130.206.166.105.80 > 130.206.169.177.53701: P 80315622:80316551(929) ack 4067364561 win 24616
IP 130.206.169.177.53701 > 130.206.166.105.80: . ack 80316551 win 65535
IP 130.206.169.177.53701 > 130.206.166.105.80: F 4067364561:4067364561(0) ack 80316551 win 65535
IP 130.206.166.105.80 > 130.206.169.177.53701: . ack 4067364562 win 24616
IP 130.206.166.105.80 > 130.206.169.177.53701: F 80316551:80316551(0) ack 4067364562 win 24616
IP 130.206.169.177.53701 > 130.206.166.105.80: . ack 80316552 win 65535
TCP Estados
del servidor
TCP Estados
del cliente
TCP: establecimiento de conexión
‣ Casos especiales: apertura simultánea
> Si dos clientes inician simultaneamente una conexión entre ellos
> Nótese que los dos tienen que usar puertos conocidos por el otro
> Se usa muy poco
connect() SYN
SYN connect()
ACK+SYN
ACK+SYN
conexión establecida
ACK conexión establecida
ACK
TCP: establecimiento de conexión
‣ Casos especiales: cierre simultáneo
> Los dos extremos deciden cerrar a la vez
> Los dos extremos deben esperar en TIME_WAIT para poder
retransmitir el FIN
close() FIN
FIN close()
ACK
ACK
TIME_WAIT
TIME_WAIT
¿Por qué se pierden los paquetes?
‣ Varias causas
> Errores de transmisión.
Modifican bits aleatorios de los
paquetes. Los niveles que hacen
detección de errores se ven obligados
a descartar el paquete al no estar R1
seguros de entregarlo correctamente Para R3 R2
Independiente del tráfico R3
R3
> Desbordamiento de buffer R1 R4
‣ Efectos:
> Pérdidas de paquetes (debido a desbordamiento de colas de routers)
> Tiempos de espera elevados (debido a tiempos de espera en colas altos)
‣ Es uno de los problemas más importantes de redes
Escenario 1
‣ Dos emisores y dos receptores
‣ Un router común (supongamos que con buffer infinito)
> Nunca ocurren retransmisiones
> Las dos fuentes envian a una media de λin
> La capacidad del router es C
retardo
C/2
!out
!out
!out
R/2
R/3
R/4
‣ Coste de la congestión
> Más trabajo (retransmisiones) para el mismo resultado (goodput)
> Retransmisiones innecesarias: capacidad perdida
Control de congestión
‣ Problema:
cuando la red está saturada por alta carga
proveniente de muchas fuentes
se pierden paquetes, se cursa menos tráfico útil y
aumenta el retardo de los paquetes que llegan a su
destino
Los protocolos de transporte reaccionan
aumentando las retransmisiones causando
más carga y más congestión
Control de congestión
Dos enfoques para control de congestión
‣ Control de congestión extremo a extremo
> No hay indicación explicita de la congestión
> Los extremos estiman la congestión basandose en sus propias
observaciones de la red
+ Perdidas observadas
+ Retardo observado
ATM ABR
Control de congestión en Internet
‣Internet se basa en un nivel de red simple que
no asiste en la detección de la congestión
‣ TCP utiliza control de congestión extremo a
extremo
> Como inferimos que hay congestión en la red?
+ Perdidas?
+ Retardo?
+ Aumentar el timeout?
‣ Si hay errores bajar la tasa de transferencia?
TCP: Control de congestión
‣ Usa control de congestión extremo a extremo
> La ventana deslizante de transporte fiable tenia un limite máximo impuesto
por el control de flujo igual a la ventana anunciada por el receptor
> Se utiliza otra ventana de congestión que limita los datos que se
pueden enviar a la red dependiendo de la percepción que tiene TCP de la
congestión
> La ventana anunciada depende del receptor
> La ventana de congestión se reduce ante la congestión limitando la tasa a la
que enviamos
CongWin
v=
RT T
Ventana = min { ventana anunciada, ventana de congestión }
confirmados se pueden
no se pueden
enviados enviar
enviar
TCP: Control de congestión
‣ ¿Cómo percibe TCP la congestión?
> Perdida de paquetes = congestión
+ Evento de timeout
+ 3 ACKs duplicados (Fast retransmit)
‣ Ajustando la ventana de congestión
> Congestion avoidance (evitación de congestion)
> Slow start
> Fast recovery
> Timeout
‣ MSS: maximun segment size
> Aun cuando TCP utiliza secuencias y ACKs por bytes individuales cuando tiene
mucho que enviar utiliza un máximo tamaño de segmento, que llamaremos
MSS
> En la siguiente clase veremos como se elige el MSS
TCP: Congestion avoidance
‣ Tras detectar congestión TCP entra en una fase de
evitación de congestión (congestion avoidance)
> Si la ventana de congestión tiene un valor de N MSS
> En congestion avoidance se abre 1 MSS cada vez que enviamos con exito
toda la ventana
> La ventana sube linealmente CongWin=4 MSS
Buscando encontrar el punto de
equilibrio sin aumentar demasiado la
congestión
CongWin=5 MSS
Enviado
por RTT
tiempo
TCP: Congestion avoidance
‣ Si en esta situación se produce una pérdida
> De un sólo paquete, lo que provoca 3 ACKs duplicados. Se interpreta como
congestión ligera
> La ventana se reduce inmediatamente a la mitad
A la vez que se hace fast retrasmit del paquete perdido
Esto se conoce como fast recovery (originalmente se reducía a 1MSS)
> Buscando reducir notablemente la tasa CongWin=8 MSS
de transmisión y colaborar en que la
congestión no crezca
> Si se siguen recibiendo ACKs la
ventana sigue creciendo linealmente
Enviado
CongWin=4 MSS
por RTT
tiempo
TCP: Congestion avoidance
‣ Se puede ver que la tasa se va ajustando
alrededor del punto de congestión
> si hay muchos errores la tasa baja y se tarda más en recuperarla
> si hay pocos errores el crecimiento lineal es capaz de llegar mas a mas
velocidad
> Este mecanismo se suele llamar AIMD
Additive Increase Multiplicative Decrease
‣ Y cómo empieza la conexión??
> Con CongWin = 1 MSS
1 pérdida 1 pérdida
Enviado
por RTT 1 pérdida
tiempo
TCP: Slow Start
CongWin
‣ En el principio CongWin=1 MSS pero... =1 MSS
CongWin
=8 MSS
tiempo
TCP: Slow Start
‣ El slow start se mantiene hasta que se produce una
pérdida (o bien se alcanza la ventan de control de
flujo) haciendo entrar en congestion avoidance
> Si la perdida se detecta por ACKs duplicados...
+ Fast retransmit + fast recovery CongWin = CongWin/2
‣ Y si se produce un timeout?
slow start congestion avoidance
tiempo
TCP: pérdidas y congestión
‣ Pérdida detectada por ACK duplicados
> Congestión “ligera”: hay perdidas pero siguen llegando paquetes
> Acciones:
+ Retransmitir el paquete perdido (Fast retransmit)
pérdidas y
congestion avoidance
timeout
slow start
tiempo
TCP: control de congestión
En resumen
‣ Cuando CongWin está por debajo de Threshold.
Slow start. La ventana crece exponencialmente
‣ Cuando CongWin está por encima de Threshold.
Congestion avoidance. La ventana crece
linealmente
‣ Cuando ocurre un triple ACK duplicado.
Threshold se pone a CongWin/2 y CongWin a
Threshold
‣ Cuando ocurre un timeout. Threshold se pone a
CongWin/2 y CongWin se pone a 1MSS
TCP: control de congestión
‣ Eventos en el emisor
Evento Estado Acción Notas
Recibe ACK para Slow Start CongWin = CongWin + MSS, CongWin se dobla por cada
datos no (SS) If (CongWin > Threshold) RTT
confirmados set state to “Congestion Avoidance”
Recibe ACK para Congestion CongWin = CongWin+MSS * (MSS/CongWin) Additive increase, CongWin
datos no Avoidance aumenta 1 MSS por cada
confirmados (CA) RTT
La ventana de control de
flujo impone el máximo
t i o n t ion
ge s e s
c o n
a n c e cong ance
avoi
d avoid
t
star
rt
sta
slow
pérdida pérdida
w
slo
muchas
perdidas
TCP: eficiencia de la conexión
‣ Sigue el límite de AdvertisedWindow/RTT
‣ Esto es para una conexión que este siempre
enviando
> Tenga siempre datos en el buffer de emisión
> La aplicación del receptor lea los datos suficientemente rápido
como para que el emisor siempre anuncie la ventana máxima
‣ Cómo podemos transmitir a mayor velocidad?
> Mejorando TCP para que permita ventanas mayores
> Usando más de una conexión TCP??
> UDP tiene control de flujo??
TCP: equidad (fairness)
‣ Equidad para TCP
> Si N conexiones TCP comparten un enlace la capacidad del enlace R
debería repartirse entre todas por igual R/N
Cuello de botella
capacidad R
Más sobre equidad
‣ ¿Qué pasa con UDP?
> Las aplicaciones multimedia suelen usar UDP para evitar el control
de congestión.
> Envían a tasa constante y no quieren que esta se vea reducida
> Son capaces de tolerar pérdidas
‣ Sin embargo
> Es dificil garantizar la equidad en ese ambiente TCP+UDP
> El control de congestión de TCP es justo si compite con otros TCPs
> Esto es un área de investigación activa
+ UDP que sea TCP friendly?
‣ Soluciones win 0
> Delayed ACK : este es uno de los
1byte
motivos
win 1
> No se anuncia ventana hasta que haya
un minimo tamaño en el buffer, 1MSS
win 0
TCP: detalles
‣ Para que sirve el flag PUSH ??
> Originalmente para indicar a TCP que debe entregar esos datos
inmediatamente a la aplicación. La aplicación emisora podía notificar a TCP
en que punto debía entregar.
Hoy en día las aplicaciones no tienen esa opción y TCP pone el flag PUSH
a 1 cuando vacía el buffer del emisor
Los sistemas derivados de BSD nunca retrasan la entrega de datos a las
aplicaciones
‣ Si los dos extremos no envían nada. TCP envia
paquetes para mantener la conexión activa???
> NO,
Hay una opción KEEPALIVE que hace enviar periódicamente paquetes para
confirmar que el otro extremo sigue ahí. Pero es objeto de gran polémica
Si tengo un telnet, pierdo la red y la recupero un tiempo después, por qué
debería perder la conexión?