La capa de transporte Funciones en capa de transporte

Anuncio
La capa de transporte
Redes de
Computadoras
Funciones en capa de transporte
1
Servicios y protocolos de transporte
z
Se provee comunicación
lógica entre procesos de
aplicación corriendo en
diferentes hosts
–
z
servicios de transporte vs. de
red :
–
–
z
Los protocolos de transporte
corren en sistemas finales
capa de red: transferencia de
datos entre sistemas finales
(hosts)
capa de transporte:
transferencia de datos entre
procesos
La capa de transporte se
apoya en y enriquece los
servicios la capa de red
Protocolos de capa de transporte
Servicios de transporte en Internet :
z
Entrega confiable, ordenada, unicast (uno a uno) : TCP
–
–
–
control de congestión
control de flujo
establece conexión
z
Entrega no confiable (“best-effort”), desordenada, unicast o
multicast (uno a muchos): UDP
z
servicios no disponibles:
–
–
–
tiempo real
garantías de ancho de banda
multicast confiable
2
TCP/IP vs. OSI
Protocolos de transporte en Internet
3
Encapsulación de las PDUs
Multicanalización/demulticanalización
4
Cómo funciona la demulticanalización
z
El host recibe datagramas IP
–
–
–
–
z
cada datagrama tiene dirección
IP fuente, dirección IP destino
cada datagrama carga 1
segmento de capa de transporte
cada segmento trae números de
puerto fuente y destino
recordar: números de puerto
bien conocidos para
aplicaciones específicas
(RFC1700)
host usa direcciones IP y
números de puerto para dirigir
segmento al socket apropiado
demux “connectionless”
z
Crear sockets con números de puerto:
–
–
z
DatagramSocket mySocket1 = new DatagramSocket();
DatagramSocket mySocket2 = new DatagramSocket(13542);
El cliente identifica un socket UDP por la 2-tupla:
(dir IP dest, número puerto dest)
z
Cuando un host recibe un segmento UDP:
–
–
z
verifica número de puerto destino en el segmento
dirige el segmento UDP al socket ese número de puerto
Datagramas IP con dirs IP fuente diferentes y/o
números de puerto dirigidos al mismo socket
5
demux “connectionless”
demux “connection-oriented”
z
socket TCP identificado por 4-tupla única:
–
–
–
–
z
z
host receptor usa los cuatro valores para dirigir el
segmento al socket apropiado
host servidor puede dar soporte a muchos sockets
TCP simultáneos:
–
z
dir IP fuente
número puerto fuente
dir IP destino
número puerto destino
cada socket identificado por su propia 4-tupla
Los servidores Web tienen sockets diferentes para
cada cliente que se conecta
–
HTTP no-persistente tendrá socket diferente para cada
petición
6
demux “connection-oriented”
User Datagram Protocol (UDP)
7
User Datagram Protocol (UDP)
z
z
z
z
Protocolo sin conexión (connectionless).
Provee un servicio de datagramas en mejor
esfuerzo (best-effort) a los sistemas.
Servicio no confiable que no garantiza la
entrega, no entrega en orden y no protege
contra duplicados.
Una computadora puede enviar paquetes sin
haber establecido antes una conexión con el
receptor.
User Datagram Protocol (UDP)
z
No hay ACKs para confirmar recepción.
z
No hay ordenamiento de paquetes.
z
No hay feedback para controlar la velocidad a la que
fluye la información entre las máquinas.
z
Resulta útil en casos donde se prefiere simplicidad.
z
Las capas superiores pueden agregar corrección de
errores, verificación de duplicados, etc.
8
User Datagram Protocol (UDP)
z
Estructura de mensajes UDP
Campos encabezado UDP
z
z
z
Puerto fuente y destino. Usados para
indicar el proceso que origina/recibe.
Longitud. Número de octetos en el
datagrama, incluyendo encabezado
(entonces la longitud mínima 8).
Checksum (opcional). En el destino se
verifica y si no es válido se descarta. Si no
se usa se indica con 0.
9
Puertos
z
Los sistemas pueden tener muchas
comunicaciones simultáneas. ¿Cómo
asignar los paquetes a los procesos
adecuados?
z
Se asigna un identificador llamado número
de puerto.
z
Hay puertos bien conocidos asignados a
servicios estándar.
Servicios estándar
z
Hay puertos asignados (RFC 1700) a
servicios estándares en Internet.
z
En sistemas Unix el archivo /etc/services
tiene la relación de los puertos y los
servicios.
z
Los números de puerto 0 a 1023 están
reservados (por IANA).
10
Servicios estándar
Algunas entradas en /etc/services
Fundamentos de transferencia
confiable
11
Transferencia confiable de datos
z
z
Muy importante en capas de aplicación, transporte y enlace
Está en la lista “top-10” de los tópicos fundamentales en redes
zLas características del canal no confiable determinan la
complejidad del protocolo de transferencia confiable
Transferencia confiable: principios
12
Protocolos stop-and-wait
Protocolos “pipelined”
z
Pipelining: emisor permite múltiples paquetes “en
vuelo”, todavía por confirmar
–
–
rango de números de secuencia debe incrementarse
buffers en el emisor y/o receptor
zDos
formas genéricas de protocolos pipelined: GoBack-N, Selective Repeat
13
Pipelining: mejora utilización
Go-Back-N
z
Emisor:
–
–
z
z
z
# secuencia de k-bits en encabezado
“ventana” de hasta N paquetes consecutivos sin ACK permitidos
ACK(n): hace ACK a todos los paquetes hasta el n (“ACK
acumulativo”)
timer para cada paquete en vuelo
timeout(n): retransmitir paquete n y todos con # secuencia
mayor en la ventana
14
Go-Back-N
Cuatro rangos números de secuencia:
1. 0 hasta send_base – 1: ya enviados y con ACK
2. send_base hasta nextseqnum – 1: enviados y sin
ACK
3. nextseqnum hasta send_base + (N-1): pueden
enviarse
4. mayor que send_base + N: no pueden enviarse
Go-Back-N en
acción
15
Selective Repeat
z
el receptor confirma individualmente todos los
paquetes recibidos correctamente
–
z
el receptor solo reenvía paquetes para los cuales no
se ha recibido ACK
–
z
mete paquetes en buffers, según se necesite, para eventual
entrega ordenada a la capa superior
timer de envío para cada paquete sin ACK
ventana de envío
–
–
N # de secuencia consecutivos
limita # de secuencia de paquetes enviados y sin ACK
Selective repeat: ventanas
16
Selective repeat
Selective repeat en acción
17
Transmission Control Protocol
(TCP)
TCP
z
Protocolo con conexión (connection
oriented).
z
Provee comunicación con confiabilidad,
secuenciamiento, control de flujo y
transmisión tipo streaming.
z
Algunos servicios que usan TCP son ftp,
telnet, rsh, smtp, etc.
18
Encabezado TCP
Operación de TCP
z
Establecimiento de conexión.
19
Operación de TCP
z
Cerrar conexión.
Operación de TCP
Cerrar conexión (caso 1)
z
z
z
z
A: “ya acabé, no tengo mas datos”
B: “OK”
B: “yo también ya acabé”
A: “OK”
20
Operación de TCP
Cerrar conexión (caso 2)
z
z
z
z
A: “ya acabé, no tengo mas datos”
B: “aquí te van mas datos”
B: “yo también ya acabé”
A: “OK”
TCP
z
Una vez establecida la conexión se envían
datos en forma confiable.
z
Existen varias técnicas para ello.
z
TCP es un protocolo con ventanas
deslizantes (sliding windows) que provee
control de flujo.
21
Stop and wait
z
Técnica rudimentaria, usada en protocolos muy
simples.
Stop and wait ARQ
z
Pequeña mejora, detecta pérdidas y retransmite.
22
Ventana deslizante (sliding window)
z
Mayor eficiencia que stop-and-wait.
z
Entrega confiable de paquetes sobre enlaces
no confiables.
z
z
Preserva el orden de transmisión de los
paquetes.
z
Soporte al control de flujo.
Ventana deslizante
Características:
z
Pueden enviarse varios paquetes antes de
recibir el ACK para el primero.
z
Requiere de buffers en ambos extremos.
z
Se usan números de secuencia para marcos
transmitidos.
23
Ventana deslizante
Ventana deslizante
24
Inicio lento (slow-start)
z
Las ventanas se adaptan de forma dinámica para
proveer control de flujo.
z
Se inicia transmitiendo a baja velocidad e
incrementándola hasta recibir notificación del
receptor sobre congestión.
z
El algoritmo es el de slow-start e usa la ventana de
congestión (cwnd).
z
Ver RFC 2001.
Inicio lento (slow-start)
z
Hay un límite para cwnd llamado ssthresh
(slow-start threshold).
z
Cuando ssthresh es rebasado se entra en
control de congestión.
z
Entonces, ssthresh se establece a la mitad
de su valor.
25
Control de congestión
z
Los sistemas en los extremos realizan este control
con TCP.
z
Principio: el transmisor incrementa su ventana hasta
detectar pérdidas, luego la reduce.
z
En slow-start el incremento es multiplicativo.
z
En control de congestión es aditivo.
z
Ver RFC 1323.
Control de congestión
z
Aunque el control de congestión es realizado
por los extremos, los sistemas intermedios
pueden auxiliar.
z
Algunas técnicas son RED (Random Early
Discard) y ECN (Explicit Congestion
Notification).
26
Control de congestión en TCP
Principios del control de congestión
Congestión:
z informalmente: “muchas fuentes enviando
muchos datos demasiado rápido como para
que la red pueda manejarlo”
z diferente del control de flujo
z Manifestaciones (síntomas):
–
–
z
pérdida de paquetes (buffer overflow en
enrutadores)
largos retardos (colas en buffers de enrutadores)
¡uno de los problemas top-10!
27
Control de congestión y de flujo
z
La congestión se presenta en redes muy
cargadas
–
z
cuando esta ocurre los extremos y la red deben
trabajar juntos para minimizarla
En contraste, el control de flujo se lleva a
cabo entre los extremos solamente
–
–
un receptor usa control de flujo para señalar al
emisor que está sobrecargado
el emisor decrementa su flujo o incluso lo
interrumpe
Control de flujo con TCP
z
receptor: informa
explícitamente al emisor
de cantidad
(dinámicamente
cambiante) de espacio
libre de buffer
–
z
RcvWindow campo en
segmento TCP
emisor: mantiene la
cantidad de datos
transmitidos, sin ACK,
menor que RcvWindow
más recientemente
recibida
28
Ventana de recepción
Control de flujo con TCP
29
Control de flujo con TCP
Congestión
z
z
Si ambas fuentes envían con ventanas completas,
puede tenerse colapso por congestión
Otras formas de colapso por congestión :
–
–
Retransmisiones de paquetes grandes tras pérdida de un
solo fragmento
Fuentes sin control por retroalimentación
30
Respuesta a la congestión
z
z
El evitamiento (avoidance) mantiene al sistema
desempeñándose en la “rodilla” de la gráfica
El control entra una vez que el sistema ha
alcanzado un estado de congestión
Enfoques
Dos enfoques generales al control de congestión :
control de congestion
extremo a extremo :
•no hay retroalimentación
explícita de la red
•la congestión se infiere de
pérdidas y retrasos
observados en extremo
•enfoque tomado por TCP
(IP no provee
retroalimentación)
control de congestión
asistido por la red :
•los enrutadores proveen
retroalimentación a los
extremos
•un bit indicando congestión
(SNA, DECnet, TCP/IP ECN,
•ATM)
•tasa explícita la cual debe
enviarse
31
Diseño de control de congestión
z
¿evitamiento o control?
–
–
z
El evitamiento mantiene el sistema en la “rodilla” de la
curva
Pero, para eso, necesita que los enrutadores envíen
señales precisas (algún tipo de retroalimentación)
El host emisor debe ajustar la cantidad de datos que
mete a la red con base en la congestión detectada
–
–
TCP usa sus ventanas para esto
Pero ¿cuál es la estrategia adecuada para incrementar o
decrementar la ventana?
Modelo de feedback de control
z
Se estudia esta pregunta usando un modelo
de feedback de control :
–
–
z
Reducir ventana cuando se percibe congestión
Incrementar la ventana de lo contrario
Restricciones:
–
–
–
Eficiencia
Justicia
Estabilidad o convergencia (el sistema no debe
oscilar significativamente)
32
Separación de funcionalidad
z
El host emisor debe ajustar la cantidad de
datos que mete a la red con base en la
congestión detectada
z
Los enrutadores pueden ayudar :
–
–
Enviando señales de congestión precisas
Aislando fuentes bien comportadas de las mal
comportadas
Manejo de congestión con TCP
33
Causas/costos de congestión:
escenario 1
z
z
z
dos emisores,
dos receptores
un enrutador,
buffers infinitos
no retransmisión
z
z
Grandes retardos
cuando hay congestión
Máximo throughput
teórico alcanzable = C/2
Causas/costos de congestión:
escenario 2
z
z
un enrutador, buffers finitos
retransmisión de paquete perdido
34
Causas/costos de congestión:
escenario 2
Causas/costos de congestión:
escenario 3
z
z
z
cuatro emisores
trayectorias multi-salto
timeout/retransmisión
35
Causas/costos de congestión:
escenario 3
Generalidades
z
Idea
–
–
–
–
z
suponer red best-effort (enrutadores FIFO o FQ)
cada fuente determina capacidad de la red por sí
misma
usar retroalimentación implícita
los ACKs dan ritmo a la transmisión (selfclocking)
Reto
–
–
determinar la capacidad disponible
ajustarse a cambios en la capacidad disponible
36
Generalidades
z
Una colección de mecanismos
interrelacionados:
–
–
–
–
–
Slow start
Evitamiento de congestión
Estimación precisa del timeout de retransmisión
Retransmisión rápida
Recuperación rápida
Generalidades
z
Mantener una ventana de congestión, cwnd
–
z
Ventana máxima de emisión :
–
z
Denota cuánto es capaz de absorber la red
Min(ventana anunciada, cwnd)
Ventana actual de emisión:
–
Ventana max - segmentos sin confirmar
37
Control de congestión TCP
z
z
z
control end-end (sin asistencia de la red)
tasa de transmisión limitada por tamaño de ventana
de congestión, cwnd, sobre segmentos:
w segmentos, cada uno con MSS bytes
enviados en un RTT:
Control de congestión TCP
z
“sondeo” de ancho de
banda utilizable:
z
idealmente: transmitir tan
rápido como se pueda
(cwnd tan grande como se
pueda) sin pérdidas
z
– incrementar cwnd hasta
pérdidas (congestión)
– pérdidas: decrementar
cwnd, luego inicia sondeo
(incrementando) de nuevo
–
dos “fases”
–
–
slow start
evitamiento de
congestión
variables importantes:
–
–
cwnd
ssthresh: define
umbral entre fases
slow start y de
evitamiento de
congestión
38
Slow-start en TCP
z
z
incremento exponencial
(por RTT) en tamaño de
ventana (¡no tan lento!)
evento de pérdida:
timeout (TCP Tahoe)
y/o tres ACKs
duplicados (TCP Reno)
Slow-start en TCP
39
Evitamiento de congestión
z
z
Fin: mantener el punto de operación a la derecha de
la “rodilla”
¿Cómo?
–
–
z
incremento aditivo: inicando de estimación burda
(ssthresh), incrementar cwnd lentamente para sondear
ancho de banda adicional disponible
decremento multiplicativo: cortar tamaño de ventana de
congestión agresivamente si se detecta pérdida.
If cwnd > ssthresh then
cada vez que hay ACK para un segmento
incrementar cwnd por 1/cwnd
i.e. (cwnd += 1/cwnd)
Evitamiento de congestión
z
Emisores establecen ssthresh (umbral de
slow start).
z
Cuando se tira un paquete se reduce
ssthresh a la mitad de su valor original.
z
Regresar a modo de slow-start.
z
Exponencialmente incrementar transmisión
hasta ssthresh, luego linealmente.
40
Slow-start con evitamiento de
congestión
Evitamiento de congestión
1: TCP Reno se salta slow start (fast
recovery) tras tres ACKs duplicados
41
Comportamiento general
Retransmisión rápida
z
z
Intervalo de timeout para detectar pérdidas puede
ser largo.
TCP puede enviar un ACK duplicado para un
paquete al que ya se le hizo ACK
–
–
–
z
z
e.g., si se recibe un segmento con núm de secuencia
mayor que el que se espera
esto quiere decir: se perdió un segmento, o simplemente
está desordenado
No hay NACKs en TCP, en vez de eso se envía ACK
duplicado
El emisor no reenvía el paquete perdido
inmediatamente al recibir el ACK duplicado.
Espera hasta recibir tres ACKs duplicados.
42
Retransmisión rápida
z
Se eliminan retransmisiones innecesarias y
capacidad desperdiciada de red si el paquete
simplemente está fuera de orden y no se ha perdido.
z
Permite a TCP no esperar a que expire el timer de
retransmisión antes de reenviar un segmento
potencialmente perdido.
z
Permite mejor utilización del canal y throughput de la
conexión.
Recuperación rápida
z
Aquí, tras recepción del ACK duplicado, la
fuente TCP no se reduce inmediatamente al
slow-start.
z
En vez de esto, después de responder a la
recepción de tres ACKs duplicados mediante
retransmisión del segmento perdido, la
fuente TCP pone cwnd a la mitad de su valor
actual y realiza evitamiento de congestión.
43
Recuperación rápida después de
retransmisión rápida
Sabores de TCP
z
z
z
Tahoe, Reno, New-Reno, SACK
TCP Tahoe (distribuido con BSD 4.3)
implementación original de mecanismos de
Van Jacobson incluyendo:
–
–
–
Slow start (incremento exponencial de ventana
inicial)
Evitamiento de congestión (incremento aditivo de
ventana)
retransmisión rápida (3 ACKs duplicados)
44
TCP Reno
z
1990, incluye:
–
–
–
–
z
Todos los mecanismos en Tahoe
Se agrega recuperación rápida (abrir la ventana tras
retransmisión rápida)
ACKs retardados (para evitar síndrome de ventana tonta)
Predicción de encabezado (para mejorar desempeño)
Variante mas ampliamente en uso
–
(Reno+NewReno)
TCP New-Reno
z
En recuperación rápida de Reno, múltiples
paquetes perdidos en ventana
–
z
pueden causar que la ventana se “desinfle”
prematuramente
En New-Reno
–
–
Recordar paquetes pendientes al inicio de
recuperación rápida
Si nuevo ACK es sólo ACK parcial, asumir que
siguiente segmento se perdió y reenviar, no salir
de recuperación rápida
45
ACKs parciales de New-Reno
z
retransmisión y recuperación rápidas sólo
reparan un segmento perdido por RTT
z
idea de New-Reno: use ACKs parciales para
permanecer en recuperación rápida y
arreglar mas segmentos perdidos
¿Qué variaciones se usan?
z
resultados experimentales obtenidos al
probar 3728 servidores web :
–
–
–
–
–
NewReno 42%
Tahoe 27% (sin retransmisión rápida)
Reno 18%
Otro 8%
Tahoe 5%
Fuente: Padhye and Floyd, SIGCOMM ‘01, August 27-31, San Diego, CA
46
TCP actualmente
TCP está definido por:
z
IETF STDs: RFC793, RFC1122 (Tahoe sin FR)
z
IETF STDs propuestos :
–
–
–
–
–
–
z
RFC1323 (Scaled windows & timestamps)
RFC2018, RFC2883, RFC3517 (SACK)
RFC2581 (Reno)
RFC2988 (RTO)
RFC3168 (ECN)
RFC3390 (Larger IW)
IETF RFCs experimentales:
–
–
RFC2582 (NewReno)
Muchos muchos mas!
Resumen de comportamiento TCP
47
Descargar