You are on page 1of 19

La capa de transporte en Internet

Antonio J
J. Rivera Rivas

Redes II. La capa de transporte en Internet 1

Contenidos
• Introducción
• Multiplexación
M lti l ió
• Protocolo UDP
– Introducción
– Características y usos
– Formato del segmento
• Protocolo TCP
– Introducción
– Formato del segmento
– C
Controll de
d errores
– Temporizadores
– Envío fiable de datos
– Control del flujo
– Gestión de la conexión
– Control
ontrol de la congest
congestión
ón

Redes II. La capa de transporte en Internet 2


Introducción
• Proporciona una
comunicación lógica Aplicación
Transporte
extremo a extremo a Red
Enlace de
Red

procesos de aplicación que


Enlace de
datos datos Red
Física Física Enlace de

se ejecutan en diferentes
datos
Fí i
Física

hosts. Red

p
• Hace transparente para
p
Enlace de
datos
Física Red

estos procesos las


l distintas
d
Enlace de
datos
Física
redes (y sus Red

características))
Enlace de
datos
Física
atravesadas Aplicación
• Protocolos usados: Transporte
Red

– TCP: Ofrece un servicio


Enlace de
datos
Física
orientado a conexión
– UDP: Ofrece un servicio no
orientado a conexión

Redes II. La capa de transporte en Internet 3

Multiplexación
Multiplexación en la capa de
transporte de Internet
• Problema: En un equipo se
pueden
d estar
st ejecutando
j t d P1 Aplicación P2

varias aplicaciones de red y Transporte


solo suele haber una Red
conexión de red (tarjeta de
red) Enlace

• Solución:
l ó Consiste en Física
implementar un mecanismo Host
que permita la entrega = socket
correcta de datos (al
socket correspondiente)
p ) = proceso
entre lla capa de
d aplicación
l ó y
la capa de transporte.

Redes II. La capa de transporte en Internet 4


Multiplexación
Un ejemplo
j p
• Para cada conexión que se crea en una aplicación se asigna un socket
(con un identificador diferente)
• Un socket viene determinado por una dirección IP y por un puerto
• Cuando el host recibe el segmento revisa el número de puerto destino
en el segmento y lo dirige convenientemente
• En general para determinar quien te ha mandado los datos o mandar
datos a tu emisor también se utiliza la dirección IP origen y el puerto
g
origen
P3 P2
Segmentos

PO: 6428
PD: 9157

PO: 9157
Cliente
l PD 6428
PD: Servidor
IP: A IP: C
Redes II. La capa de transporte en Internet 5

UDP
UDP: User Data Protocol
• Se define en el RFC 768
• Se dice que ofrece un servicio “best-
effort
effort”
– Añade muy pocas funcionalidades y es muy
limitado  Prácticamente entrega los datos de
la capa de aplicación a la de red
– Ofrece un servicio no orientado a conexión
– Servicio no fiable: se pueden perder paquetes
– No se garantiza que los paquetes lleguen
ordenados
– No se realiza control de la congestión
Redes II. La capa de transporte en Internet 6
UDP
Características y usos de UDP
• Sus limitaciones le confieren características deseables:
– Si
Sin establecimiento
st bl imi t d de lla conexión
xió (l
(lo que elimina
limi ell retardo
t d
asociado).
– Simple: sin estado de conexión en el emisor y el receptor (se
eliminan buffers,
buffers variables de estado,
estado …))
– UDP añade un encabezamiento muy pequeño.
– Al no haber control de congestión también se elimina el gasto
asociado
• Usos:
– Frecuentemente utilizado para la transmisión de datos multimedia
(vídeo o audiconferencia) donde hay:
• Tolerancia a pérdidas.
• Mucha sensibilidad a retardos
– También se usa en DNS
DNS, SNMP,
SNMP RIP.
RIP
• Si se quiere una transferencia fiable con UDP debe
implementarla la capa de aplicación (recuperando errores,
etc.)
t )

Redes II. La capa de transporte en Internet 7

UDP
Formato del segmento
g UDP
• Se encapsula
p u en unu datagrama
g m IP.. Campo
mp
protocolo = 17.
32 bits

longitud, en Nº puerto origen Nº puerto destino Para la


bytes del Suma de comprobación
detección de
Longitud
segmento errores
UDP,
incluyendo
cabecera.
Datos de aplicación
(mensaje)

Redes II. La capa de transporte en Internet 8


UDP
Suma de comprobación
p
• Se utiliza para detectar errores
• Al segmentot UDP se le
l añade
ñ d la
l siguiente
i i t Pseudocabecera
P d b ((con d
datos
t
del datagrama IP)
32 bits
Dirección IP origen
Dirección IP destino
00….000 Protocolo LongitudUDP
Emisor: Receptor:
• Trata los contenidos del segmento •S
Se realiza
li ell mismo
mism procedimiento
p dimi nt y se s
como palabras de 16 bits. comprueba si coincide con el campo de
• Se suman bit a bit todas las suma de comprobación:
palabras y se hace el complemento – NO - error detectado
d t t d pero no se
hace o como mucho se informará a
a1
la capa de aplicación
• Se ponen los resultados en el – SI - no se detecta
d ell error, lo
l que
campo suma de comprobación. no quiere decir que no exista.
Redes II. La capa de transporte en Internet 9

TCP
TCP
Transmision Control Protocol
• Ofrece un servicio orientado a conexión
– Cuando se establece, se inicializan unas variables en ambos
equipos para mantener los estados por los que pasará la conexión
• El servicio que se ofrece es fiable
– Los segmentos se reciben ordenadamente
– Control de errores
– Control
C t l ded flujo
fl j
• Características de la transferencia de datos:
– Full
Full-duplex
duplex
– Uno a uno (no se permite uno a varios)
– Se mantienen unos buffers en el emisor y receptor aunque no se
especifica
s ifi como
m sse vacían/llenan
í /ll
– Se define un tamaño máximo aplicación aplicación

de p
paquete:
q
escribe datos lee datos
socket socket

MSS: Maximum Segment Size


Almacén en búfer Almacén en búfer
de envío TCP de recepción TCP

segmento

Redes II. La capa de transporte en Internet 10


TCP
Formato del segmento
g TCP
32 bits • Número de secuencia / número de
reconocimiento: utilizados para
núm. puerto origen núm. puerto destino controlar paquetes (servicio
secuencia fiable)
g
• Longitud de cabecera: ya
y que
q
reconocimiento
i i puede variar según
ú el campo
long sin opciones
cabec uso U A P R S F ventana recepción
• Indicadores: Diversas funciones
suma de comprobación Apuntador datos urg
urg.
• Ventana recepción:
ó para control de
flujo (ventana deslizante)
Opciones (longitud variable)
• Suma de comprobación: igual que
en UDP
• Campo de opciones: usado por
Datos de aplicación emisor y receptor para negociar
(longitud variable) MSS
MSS, tamaños de ventana
ventana, etc

Redes II. La capa de transporte en Internet 11

Control de
errores en TCP Control de errores en TCP
• Campo Suma de Comprobación:
– Sirve para detectar errores igual que en UDP
• Campo Secuencia:
– El host que emite indica el número de byte, dentro de todo el conjunto de bytes
que se van a enviar, y que corresponde al primero de los bytes del campo de datos
que se está enviando
• Campo Reconocimiento (ACK):
– El host que ha recibido asiente e indica el siguiente byte que se espera dentro de
la secuencia de bytes recibidos
• Bit A:
– Indica si es válido el campo (de Reconocimiento) anterior (A=1) o no (A=0)
– Es necesario ya que TCP implementa la técnica de superposición o piggybacking
(envío de segmentos full duplex con datos y asentimientos)
• Características generales del control de errores:
– Se ponen en marcha temporizadores
– TCP permite reconocimientos acumulativos (reconocer a la vez varios segmentos)
– No hay reconocimientos negativos.
– El receptor no puede explicitar claramente al emisor la existencia de datos
desordenados.

Redes II. La capa de transporte en Internet 12


Control de Ejemplo: Funcionamiento de
errores en TCP
Telnet
• Cada carácter tecleado
Host A Host B
por el cliente se envía al
servidor remoto Usuario
• El servidor devuelve un escribe
C
‘C’
segmentot con cada
d host reconoce
carácter enviado, para la recepción de
que el cliente p
q pueda ‘C’ y repite de
comprobarlo
b l vuelta
l ‘C’
‘ ’

• Ejemplo:
– El host A hace un telnet al El host ACKs

ttiempo
host B recibe
– El usuario del host A solo ‘C’ repetida
teclea el carácter C
– El host B utiliza
superposición para Seq: campo secuencia
reconocer. El host A no ACK: campo reconocimiento
puede
d utilizarla
tili l porque ell
usuario no ha tecleado más Datos: campo de datos

Redes II. La capa de transporte en Internet 13

Temporizadores
en TCP Temporizadores
p en TCP
• Temporizador: Tiempo límite de espera desde que
se envía
í un paquete hasta que se retransmite
porque no llega su asentimiento
• RTT: Round-Trip
d Time. Tiempo que transcurre
desde que se envía un paquete hasta que se
recibe
ib ssu asentimiento
s ntimi nt
• El tiempo del temporizador debe ser mayor que el
RTT ¿pero
¿p r cuanto?
cu nt ?
– Si es demasiado pequeño habrá retransmisiones
innecesarias
– Si es demasiado grande estaremos perdiendo el tiempo,
el ancho de banda, etc.

Redes II. La capa de transporte en Internet 14


Temporizadores
en TCP Estimación del RTT
• MuestraRTT: el tiempo
p medido de la transmisión
del segmento hasta que se recibe el ACK.
– Ignora
g retransmisiones.
– MuestraRTT variará, necesidad de que el RTT
estimado se “suavice”.
• EstimadoRTT: Media ponderada de
desplazamiento
p exponencial
p de la MuestraRTT
EstimadoRTT = (1-)*EstimadoRTT + *MuestraRTT
j sobre una media normal q
– Esta medida tiene como ventaja que, con
un  adecuado refleja rápidamente los cambios de tendecia en
MuestraRTT
– Valor típico:  = 0.125
0 125

Redes II. La capa de transporte en Internet 15

Temporizadores
en TCP Ejemplo
j p de estimación de RTT
RTT: gaia.cs.umass.edu to fantasia.eurecom.fr

350

300
undos)

250
RTT (milisegu

200

150

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

MuestraRTT EstimadoRTT

Redes II. La capa de transporte en Internet 16


Temporizadores
en TCP Tiempo
p ppara el temporizador
p TCP
• Para calcular el tiempo
p final para
p el temporizador
p
las variaciones de MuestraRTT con respecto a
EstimadoRTT
• Se define
DevRTT = ( )
(1-)*DevRTT + 
*|MuestraRTT-EstimadoRTT|
| |
típicamente,  = 0.25
• Con lo que el temporizdor queda:
Temporizador = EstimadoRTT + 4*DevRTT
• Por tanto este tiempo de temporización depende de una
media ponderada del RTT y de las variaciones de las
muestras con respecto a esta media

Redes II. La capa de transporte en Internet 17

Temporizadores Variación del temporizador


en TCP
cuando existen retrasmisiones
• Si se cumple
p el tiempo
p de espera
p establecido por
p
el temporizador habrá que retransmitir el
segmento
g
• En este caso el valor del tiempo de espera del
temporizador se fija al doble.
Temporizador = Temporizador * 2
• Esto
Est ses hace
h c para
p r controlar
c ntr l r la
l congestión
c n stión
• Si el temporizador arranca por cualquier otro
motivo (ver
( algoritmo
l más
á adelante:
d l se reciben
b
datos o un ACK) se calcula con la fórmula anterior

Redes II. La capa de transporte en Internet 18


Control de flujo
en TCP Control de flujo
j en TCP
• Se utiliza un algoritmo similar al de la ventana deslizante
• La idea básica es que el receptor informe al emisor de la
capacidad (en bytes) de su buffer de recepción
• El receptor mantiene las siguiente variables:
– BufferRecepcion: guarda el tamaño de éste buffer
– UltimoByteLeido:
y por una aplicación
p p del buffer anterior
– UltimoByteRecibido: en éste buffer
– VentanaRecepcion: tamaño libre en el buffer de recepción
• La
L ventana
nt n de
d recepción
p ión ess dinámica
dinámi y sse calcula
l ul como:
m :
VentanaRecepcion = BufferRecepcion –
- (
(UltimoByteRecibido
y – UltimoByteLeido)
y )
VentanaRecepción

datos de Datos
Espacio
p libre Proceso de
la red TCP en aplicación
li ió
el búfer

BúferRecepción
Redes II. La capa de transporte en Internet 19

Control de flujo
en TCP Control de flujo
j en TCP
• El receptor
p envía al emisor la
VentanaRecepcion en campo Window del
segmento
g TCP,, cuando se envían acuses de
recibo
• El emisor mantendrá las variables:
– UltimoByteEnviado
– UltimoByteReconocido
• La diferencia ente estas dos variables son
l bytes
los b t enviados
i d y no reconocidos.
id El
emisor tiene que cumplir que:
UltimoByteEnviado-UltimoByteReconocido ≤ VentanaRecepcion

Redes II. La capa de transporte en Internet 20


Control de flujo
en TCP Problemas en control de flujo
j TCP
• Síndrome de la ventana tonta:
– Descripción:
• Se daría cuando el buffer (del receptor) estuviera prácticamente lleno y la
aplicación cogiera datos de éste de byte en byte (o poca cantidad)
• El receptor anunciará una VentanaRecepcion al emisor de un byte (o poca
cantidad)
• El emisor mandaría datos en pequeñas cantidades (hasta un byte) con lo que la
eficiencia general disminuiría
– Soluciones:
• Que el receptor anuncie una VentanaRecepcion igual a cero hasta que se
libere suficiente buffer
• Que el emisor retrase sus envíos hasta que forme segmentos de más capacidad
• Otro problema es que el último anuncio de VentanaRecepcion sea
cero porque el receptor esté colapsado:
– El emisor no mandaría más datos
– Si el receptor vacía su buffer ya todo debería volver a la normalidad
– Sin embargo si el receptor tampoco tiene datos (de otro envío) que enviar
al emisor, el emisor no podría enviar más datos.
– Solución: envío por parte del emisor de segmentos de datos con un byte
d d
de datos.
t
– El receptor ya enviaría un asentimiento y una VentanaRecepcion > 0
Redes II. La capa de transporte en Internet 21

Transmisión
fiable en TCP Transmisión fiable en TCP
• Con los elementos anteriores TCP crea un servicio de
transferencia fiable de datos sobre el servicio IP no
fiable. Características del servicio:
– Sin errores
– Sin
Si pérdidas
é did
– Manteniendo el orden
• Este servicio se implementa
p utilizando
– ACKs acumulativos.
– TCP utiliza un único temporizador de retransmisión.
– Las retransmisiones se desencadenan por:
• Los sucesos del tiempo límite de espera (Temporizador).
• ACKs duplicados.
– Inicialmente
Inicialmente, consideraremos un emisor TCP simplificado donde
pueden ocurrir tres eventos e ignoraremos
• ACKs duplicados.
j y el control de congestión.
• Control de flujo g

Redes II. La capa de transporte en Internet 22


Transmisión Implementación de un emisor
fiable en TCP
TCP simplificado
SigNumSec = NumSecInicial //Número de secuencia a incluir en segmento
BaseEnvío = NumSecInicial //Número de secuencia más antiguo por
reconocer
loop (para siempre) {
Comentario:
switch(evento)
• BaseEnvío-1: último
evento: datos recibidos de la aplicación superior byte reconocido
crean segmentos TCP con número de secuencia SigNumSec acumulado
if (actualmente el temporizador no corre)
iniciar el temporizador Ejemplo:
pasar el segmento a IP • BaseEnvío-1
B E í 1 = 71;
71
SigNumSec = SigNumSec + longitud(datos)
Y= 73, así que el receptor
evento: fin del tiempo límite de espera del temporizador requiere 73+ ;
retransmitir el segmento aún no reconocido con el Y > BaseEnvío,
BaseEnvío así que los
menor número de secuencia
iniciar temporizador nuevos datos son
reconocidos.
evento: ACK recibido, con el valor Y en el campo ACK
if (Y > BaseEnvío) { //Y: número de secuencia que el receptor reconoce
BaseEnvío = Y
if (existen segmentos aún no reconocidos)
iniciar temporizador
} si no parar temporizador
} /* f
fin del
d l bucle
b l infinito
f */

Redes II. La capa de transporte en Internet 23

Transmisión
fiable en TCP Ejemplos
j p
Host A Host B Host A Host B
Sec=92 tiempo de espera
pera
Tiempo de esp

X
pérdida

BaseEnvío=
100
Sec=92 tiempo de espera

BaseEnvío
= 120

BaseEnvío
BaseEnvío
= 100
= 120

tiempo tiempo
pérdida de ACK tiempo de espera prematuro
Redes II. La capa de transporte en Internet 24
Transmisión
fiable en TCP Ejemplos
j p
Host A Host B

o de espera
tiempo
X
pérdida

BaseEnvío
= 120

tiempo
Ej
Ejemplo
l de
d ACK acumulado
l d

Redes II. La capa de transporte en Internet 25

Transmisión
fiable en TCP Generación de ACKs en TCP
Evento en el receptor Acción en el receptor TCP
Llegada de un segmento con el número de ACK retardado. Esperar hasta 500 milisegundos el
secuencia esperado y en orden. Todos los siguiente segmento. Si no hay siguiente segmento,
datos hasta el núm de secuencia ya envíar ACK.
reconocidos
reconocidos.

Llegada de un segmento con el número de Enviar inmediatamente un único ACK acumulado,


secuencia esperado y en orden. Otro reconociendo ambos segmentos en orden.
segmento está pendiente de reconocimiento
por retardar ACK

Llegada de un segmento con un número Enviar inmediatamente un ACK acumulado


de orden menor del esperado (no hay reconociendo todos los segmentos
g q
que tenemos e
agujeros previos) indicando el segmento que se estaba esperando

Llegada de un segmento en desorden con un Enviar inmediatamente un ACK duplicado,


y que
número de secuencia mayor q el esperado.
p indicando el número de secuencia del siguiente byte
Agujero detectado (hasta ahora flujo normal) que se esperaba en parte inferior de agujero

Llegada de un segmento cuando existe un Si ese segmento empieza en el extremo inferior del
agujero detectado agujero, enviar inmediatamente un ACK hasta
d d ttengamos completo,
donde l t sii no enviar
i iinmediat.
di t
ACK duplicado indicando segmento que se
esperaba en parte inferior de agujero
Redes II. La capa de transporte en Internet 26
Transmisión
fiable en TCP Retransmisión rápida
p
• Vamos a intentar hacer más eficiente la respuesta ante la pérdida
de uno o varios segmentos enviados por un emisor.
emisor
• El emisor no retransmitirá el paquete hasta que se cumpla el
período de espera fijado por el temporizador (que suele ser
relativamente largo)
• Cuando el receptor se da cuenta de que se ha perdido un segmento
(no hay una continuidad en los números de secuencia) lo único que
puede hacer es mandar un reconocimiento
reconoc m ento (ACK) dupl
duplicado
cado donde
se indique la secuencia del segmento perdido. En TCP no hay
reconocimientos negativos.
• Según
g vayay enviando el emisor segmentos
g irá recibiendo ACKs
duplicados requiriendo el primer segmento perdido. A partir de
estos ACKs duplicados intentaremos anticiparnos al temporizador
• Si el emisor recibe 3 ACKs p para los mismos datos, se supone
p que
q el
segmento se perdió
d ó tras ell reconocimiento de
d datos
d entonces:
– Retransmisión rápida: reenviar el segmento antes de que el
temporizador expire.

Redes II. La capa de transporte en Internet 27

Transmisión
fiable en TCP Algoritmo
g de retransmisión rápida
p
• Sustituye al evento de ACK recibido del algoritmo general anterior

evento: ACK recibido, con el valor Y en el campo ACK


if (Y > BaseEnvío) {
BaseEnvío = Y
if (existen elementos pendientes de reconocimiento)
iniciar temporizador
} si no parar temporizador
else {
incrementar el número de ACKs duplicados recibidos para Y
if (número de ACKs duplicados recibidos para Y = 3) {
reenvíar el segmento con número de secuencia Y
}

Un ACK duplicado
p para
p un Retransmisión rápida
segmento reconcido
previamente
Redes II. La capa de transporte en Internet 28
Gestión de la
conexión TCP Gestión de la conexión en TCP
• Para que un emisor y un receptor TCP puedan intercambiar
d t d
datos deben
b establecer
t bl antes
t una ““conexión”
ió ”
• La petición de conexión la realiza siempre el cliente.
Desde el punto de vista de la programación cliente
cliente-
servidor se crearán sockets o puntos de conexión:
– En el cliente se ejecuta algo parecido a:
Socket socketCliente = nuevo Socket(”host",”puerto");
– En el servidor se ejecutará algo como:
Socket socketConexión = socketBienvenida.aceptar();
p
• Esta conexión va a quedar especificada por dos parejas de
números (dirección IP origen, puerto origen) (dirección IP
destino puerto destino)
destino,
• En cualquier caso y cuando se establece una conexión TCP
hay que inicializar todas la variables que la controlan
(Números de secuencia, Búferes, …)
Redes II. La capa de transporte en Internet 29

Gestión de la
conexión TCP Establecimiento de la conexión
Paso 1: El cliente envía un segmento especial
((segmento
g SYN)) al servidor:
cliente
l servidor
– Bit SYN = 1
ción de

– Especifica el número de secuencia inicial


conexión

(clienteNis).
– Sin datos.
d
Petic

concedida
c
Conexión

Paso 2: El servidor recibe el segmento SYN, y


responde con un segmento SYNACK.
– Bit SYN = 1
a

– El campo reconocimiento (ACK) se fija a


clienteNis+1 ACK
– Se especifica el número de secuencia inicial
del servidor servidorNis
– El servidor reserva los buffers
Paso 3: El cliente recibe el SYNACK, responde
con un segmento ACK, que puede contener
d t
datos.
Tiempo
o

– Bit SYN = 0
– Campo de reconocimiento = servidorNis+1
– Campo de secuencia = clienteNis+1
– El cliente reserva los buffers

Redes II. La capa de transporte en Internet 30


Gestión de la Liberación de la conexión
conexión TCP
(p ej
(p. ej. del cliente)
Paso 1: El sistema final del cliente envía un
segmento FIN al servidor. (Bit FIN = 1)
cliente servidor
Paso 2: El servidor recibe el FIN y
responde con un ACK. Cierra la conexión cerrar
y envía otro segmento FIN.
Paso 3: El cliente recibe el FIN y
responde con un ACK.
– Entra en la “espera temporal” (suele cerrar
estar en este estado entre 30 seg y
2 minutos)

al
a tempora
– R
Responderá
d á con ACK a otros
t
posibles segmentos FINs recibidos.
– Después de esto se cierra
d finiti m nt lla conexión
definitivamente n xión

espera
Paso 4: El servidor recibe el ACK. Se
cierra la conexión.
cerrado
d

Redes II. La capa de transporte en Internet 31

Gestión de la Diagramas de estado en una


conexión TCP
conexión TCP
CERRADO La aplicación cliente inicia
esperar 30 una conexión TCP
segundos

envíar SYN

ESPERA_TEMPORAL SYN_ENVIADO

recibir
ibi FIN recibir SYN y ACK
envíar ACK envíar ACK

ESPERA_FIN_2 ESTABLECIDO Ciclo de vida del


La aplicación
L plic ción cliente
cli nt inicia
inici
servidor TCP
recibir ACK el cierre de la conexión
ESPERA_FIN_1 La aplicación servidor crea
no envíar nada envíar FIN CERRADO
recibir ACK un socket en escucha

Ciclo de vida del no envíar nada

cliente TCP
ÚLTIMO_ACK ESCUCHA

• Estas figuras
recibir SYN
envíar FIN envíar SYN Y ACK

representan diagramas ESPERA_CIERRE SYN_RECIBIDO


de estado simplificados
para el cliente y el rrecibir
cibir ACK

servidor
no envíar nada
recibir FIN ESTABLECIDO
envíar ACK

Redes II. La capa de transporte en Internet 32


Control de la
g
congestión TCP Control de la congestión
g en TCP
• Extremo a extremo sin ayuda de la capa de red
• Se define para el emisor VentanaCongestion que se usará cuando
se detecte congestión
• Se debe cumplir que:
UltimoByteEnviado-UltimoByteReconocido

min(VentanaCongestion,VentanaRecepcion)
• Cuando hay congestión solo consideraremos VentanaCongestion
• Teniendo en cuenta el RTT se define la tasa de envío como:
VentanaCong
tasa = bytes/seg
RTT
• El emisor percibe la congestión cuando:
– Salta el temporizador (segmentos perdidos)
– Recibe 3 ACKs duplicados
• Mecanismos para evitar la congestión
– Incremento aditivo, decremento multiplicativo (AIMD).
– Arranque lento.
lento
– Conservación tras los eventos del tiempo límite de espera.
Redes II. La capa de transporte en Internet 33

Control de la Algoritmo de Incremento aditivo y


g
congestión TCP
Decremento multiplicativo (AIMD)
• Decremento multiplicativo
p
– Cuando se detecta congestión lo normal es
reducir la VentanaCongestion.
g
– Así por cada evento de congestión se divide
VentanaCongestion
g a la mitad
– El límite inferior es 1 MSS
• Incremento aditivo
– Cuando no se detecta congestión hay que
aumentar la VentanaCongestión
– TCP va aumentando VentanaCongestión en uno
cada vez que recibe un ACK esperado

Redes II. La capa de transporte en Internet 34


Control de la
g
congestión TCP Ejemplo
j p AIMD

Ventana de
congestión

24 Kbytes

16 Kbytes

8 Kb
Kbytes
t

tiempo

Conexión TCP de larga vida

Redes II. La capa de transporte en Internet 35

Control de la
g
congestión TCP Arranque
q lento
• Cuando la conexión comienza,
se fija
fij VentanaCongestion
V t C ti Host A Host B
a un valor bajo (1 MSS):
– Ejemplo:
Ejemplo MSS = 500 Bytes y
RTT
T

RTT = 200 mseg.


– Tasa inicial (MSS/RTT) = 20
kbps.
kbps
• A partir de aquí, la tasa
aumenta exponencialmente
rápido
á id ((se dobla
d bl en cadad RTT)
hasta que ocurre el primer
evento de pérdida.
• Cuando ocurre un evento de tiempo
pérdida sea aplica AIMD

Redes II. La capa de transporte en Internet 36


Control de la
g
congestión TCP Mejoras
j al algoritmo
g anterior
• Se introduce una variable umbral hasta donde se mantiene
ell crecimiento
i i t exponenciali ld
de lla VentanaCongestion
V t C ti a
partir de ahí crecerá linealmente
• No se va a considerar igual un evento de llegada de tres
ACKs duplicados (la red puede enviar algo) que un evento
de pérdida de ACK (es más alarmante porque no sabemos
nadad de
d la
l red).
d) Así:
A í
– Después de 3 ACKs duplicados:
• La VentanaCongestion se divide a la mitad y se fija este valor
también para el umbral
• La ventana crece linealmente.
– Tras el evento de pérdida:
• La VentanaCongestion se fija, en cambio, a 1 MSS.
• La ventana entonces crece exponencialmente.
• El umbral se fija a la mitad de la VentanaCongestion antigua

Redes II. La capa de transporte en Internet 37

Control de la Resumen del control de la


g
congestión TCP
congestión en TCP
• Cuando la VentanaCong está por debajo del Umbral,el emisor está
en la fase de arranque lento y la ventana crece exponencialmente.
exponencialmente
• Cuando la VentanaCong está por encima del Umbral, el emisor está
en una fase de evitar la congestión, la ventana crece linealmente.
• Cuando acontece un triple ACK duplicado,
duplicado el Umbral se fija a la
mitad de la VentanaCong y la VentanaCong se pone al valor del
Umbral.
• Cuando se da el el evento de p
pérdida de ACK,, el Umbral se fija
j a la
mitad de la VentanaCong y la VentanaCong se pone a 1 MSS.
14
Ventana de congestiión

12 Tras triple
p ACK duplicado
p
segmentos)

10
Tras pérdida de ACK
8
6
(en s

4 umbral
2
0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Ciclo de transmisión

Redes II. La capa de transporte en Internet 38