Академический Документы
Профессиональный Документы
Культура Документы
Gran parte de este material fue tomado del captulo 3 del libro:
3rd edition. Jim Kurose, Keith Ross Addison-Wesley, July 2004. Traduccin: Vctor J. Sosa
copyright 1996-2004 J.F Kurose and K.W. Ross, All Rights Reserved
Capa de transporte
3-1
Capa de Transporte
Objetivos: Comprender los principios que fundamentan los servicios de transporte:
Multiplexado/demulti plexado Transferencia de datos fiable Control de flujo Control de congestin
Capa de transporte
3-2
Temas a cubrir
3.1 servicios a nivel de transporte 3.2 multiplexado y /demultiplexado 3.3 transporte sin conexin: UDP 3.4 principios sobre transferencia de datos fiable 3.5 transporte orientado a conexin: TCP
Estructura del segmento Transferencia de datos fiable Control de flujo Gestin de la conexin
Capa de transporte
3-4
Mquina destino
Capa de aplicacin
Virtual
Capa fsica
Capa fsica
Real
Capa de transporte
3-5
Host 2
Capa de aplicacin
Entidad de transporte
Entidad de transporte
Capa de red
Capa de red
TSAP: Transport Service Access Point NSAP: Network Service Access Point
Capa de transporte
3-6
Capa de transporte
3-7
te or sp an tr
co gi l
e oem tr ex
network data link physical application transport network data link physical
Capa de transporte
re xt
o m
3-8
Capa de transporte
3-9
Capa de transporte:
Mejora y se apoya de los servicios de la capa de red.
Capa de transporte
3-10
te or sp an tr
co gi l
e oem tr ex
network data link physical application transport network data link physical
re xt
o m
Servicios no disponibles:
Garanta en retrasos Garanta en ancho de banda
Capa de transporte
3-11
Temas a cubrir
3.1 servicios a nivel de transporte 3.2 multiplexado y /demultiplexado 3.3 transporte sin conexin: UDP 3.4 principios sobre transferencia de datos fiable 3.5 transporte orientado a conexin: TCP
Estructura del segmento Transferencia de datos fiable Control de flujo Gestin de la conexin
Multiplexado/demultiplexado
Demultiplexado en mquina receptora: Multiplexado en mquina emisora: Colecta los datos que provienen de los sockets, envolvindolos con una cabecera (que posteriormente ser utilizada para demultiplexar)
P2
P4
host 1
host 2
host 3
Capa de transporte 3-13
Capa de transporte
3-14
Puede recibir distintos datagramas IP con diferentes direccin de origen y/o nmeros de puerto que direccionar al socket indicado
Capa de transporte 3-15
cliente IP: A
servidor IP: C
Cliente
IP:B
Capa de transporte
3-16
Las mquinas servidoras suelen utilizar mltiples sockets TCP al mismo tiempo:
Cada socket identificado por sus 4 valores: Ip origen y dest, puerto origen y destino
Los servidores Web mantienen diferentes sockets con cada cliente que se conecta
La versin no persistente de HTTP utiliza diferentes sockets en cada peticin
Capa de transporte
3-17
client IP: A
server IP: C
Client
IP:B
Capa de transporte
3-18
cliente IP: A
servidor IP: C
Cliente
IP:B
Capa de transporte
3-19
Temas a cubrir
3.1 servicios a nivel de transporte 3.2 multiplexado y /demultiplexado 3.3 transporte sin conexin: UDP 3.4 principios sobre transferencia de datos fiable 3.5 transporte orientado a conexin: TCP
Estructura del segmento Transferencia de datos fiable Control de flujo Gestin de la conexin
No hay previo acuerdo (handshaking) entre emisor y receptor Cada segmento UDP es manejado sin considerar a los dems
No pierde tiempo en establecer una conexin Es simple: no se mantiene un estado de la conexin en el emisor ni el receptor Cabecera muy pequea (igual a menos carga) No hay control de congestin: con lo cual se pueden emitir paquetes tan rpido como los requiera la aplicacin.
Capa de transporte
3-21
UDP (Cont..)
Es muy popular en aplicaciones multimedia, las cuales son: Tolerantes a prdidas Sensibles a la tasa de Longitud, en bytes del segmento UDP, transferencia incluyendo 32 bits #Puerto origen # Puerto dest long checksum
la cabecera
DNS SNMP Si queremos dar confiabilidad de transmisin utilizando UDP, tenemos que hacer lo que corresponda en la capa de aplicacin Recuperacin de errores especficos de la aplicacin.
UDP: checksum
Objetivo: detectar errores (e.g., bits cambiados) en el segmento transmitido Emisor:
Trata el contenido del segmento como palabras de 16 bits checksum: suma todas las palabras de 16 bits y aplica complemento a 1. Graba el valor del checksum en su campo correspondiente en el segmento
Receptor:
Calcula el checksum del segmento recibido Verifica si el valor obtenido es igual al que trae el campo de checksum: NO se detect un error Si ho hay error. Quizs si pudiera haber otro tipo de errores.
Capa de transporte 3-23
Ejemplo de Checksum
Ejemplo: tenemos 2 palabras de 16 bits en el contenido del segmento
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 acarreo 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
suma 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 checksum 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
Complemento a 1 Nota: Cuando sumamos nmeros binarios, si un bit se desborda en la parte ms significativa, se suma al resultado.
Capa de transporte 3-24
Temas a cubrir
3.1 servicios a nivel de transporte 3.2 multiplexado y /demultiplexado 3.3 transporte sin conexin: UDP 3.4 principios sobre transferencia de datos fiable 3.5 transporte orientado a conexin: TCP
Estructura del segmento Transferencia de datos fiable Control de flujo Gestin de la conexin
Tiene gran relevancia en las capas de aplicacin, transporte y enlace. Se encuentra en la lista de los 10 temas ms importantes de redes
Las caractersticas que proporcione el canal no fiable determinarn la complejidad del protocolo de transferencia fiable Capa de transporte
3-26
Lado emisor
Lado receptor
udt_send(): llamado por el servicio de transporte fiable, para transferir paquetes de datos sobre un canal no fiable
Capa de transporte
3-27
tdf: anlisis
Revisaremos como
Desarrollar de manera incremental la parte emisora y receptora de un protocolo de tdf Iniciamos considerando transferencia de datos de manera unidireccional Aunque la informacin de control fluir en ambas direcciones. Utilizaremos mquinas de estados finitos (FSM) para mostrar la especificacin del emisor y receptor
Evento que causa una transicin Acciones tomadas en la transicin
estado 1
evento acciones
estado 2
Capa de transporte
3-28
tdf1.0:
emisor
receptor
Capa de transporte 3-29
Lo anterior nos ha hecho incorporar nuevos mecanismos con los que no contaba el tdf1.0 :
emisor de manera explicita que el paquete lleg bien Usando acknowledgements negativos(NAKs): el receptor informa al emisor que el paquete tuvo errores Cuando el emisor recibe un NAK retransmite el paquete
Deteccin de errores Retroalimentacin por parte del receptor: mensajes de control (ACK,NAK) receptor->emisor
Capa de transporte
3-30
receptor
rdt_rcv(rcvpkt) && corrupt(rcvpkt) udt_send(NAK)
udt_send(sndpkt)
emisor
Capa de transporte
3-31
udt_send(sndpkt)
udt_send(sndpkt)
El emisor no sabe lo que ha pasado en el receptor. Podramos retransmitir, pero generamos duplicados
3-34
Capa de transporte
3-35
rdt_rcv(rcvpkt) && (corrupt(rcvpkt) sndpkt = make_pkt(NAK, chksum) udt_send(sndpkt) rdt_rcv(rcvpkt) && not corrupt(rcvpkt) && has_seq1(rcvpkt) sndpkt = make_pkt(ACK, chksum) udt_send(sndpkt)
rdt_rcv(rcvpkt) && not corrupt(rcvpkt) && has_seq0(rcvpkt) sndpkt = make_pkt(ACK, chksum) udt_send(sndpkt)
rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq1(rcvpkt) extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(ACK, chksum) udt_send(sndpkt)
Capa de transporte
3-36
tdf2.1: anlisis
Emisor: Aadimos un nmero de secuencia al paquete Para este caso 2 nmeros de secuencia son suficientes (0,1). por qu? Debemos garantizar que nos llego el ACK/NAK correcto Hemos duplicado la cantidad de estados Receptor: Debe revisar que el paeuqte recibido no sea duplicado
Capa de transporte
3-37
Un ACK duplicado en el emisor ocasionar la misma accin que el NAK: retransmitir el paquete actual.
Capa de transporte
3-38
Fragmento de emisor
rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq1(rcvpkt) extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(ACK1, chksum) udt_send(sndpkt)
Capa de transporte
3-39
Tenemos: checksum, num. de secuencia, ACKs, en este caso la retransmisin ser de ayuda, pero no lo suficiente.
Retransmite si no se recibe ACK es ese tiempo Si el paquete (o el ACK) slo se retras (no se perdi) : Tendremos un duplicado en la transmisin, pero el uso de los nmeros de secuencia ya nos ayuda con esto. El receptor debe especificar el num de secuencia del paquete que es confirmado (ACK) Requerimos de un temporizador
Capa de transporte 3-40
rdt_rcv(rcvpkt)
rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isACK(rcvpkt,1) stop_timer timeout udt_send(sndpkt) start_timer rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) || isACK(rcvpkt,0) )
Espera por ACK1
Espera por llamada 1 de arriba rdt_send(data) sndpkt = make_pkt(1, data, checksum) udt_send(sndpkt) start_timer
rdt_rcv(rcvpkt)
Capa de transporte
3-41
Capa de transporte
3-42
Capa de transporte
3-43
Eficiencia de tdf3.0
tdf3.0 funciona bien, pero su eficiencia es muy discutible. ejemplo: consideremos un enlace de 1 Gbps, un retardo de propagacin de 15 ms, (RTT=30ms), Un tamao de paquete de 8Kb
T transmisin =
U emisor: utilizacin fraccin de tiempo que el emisor estuvo enviando Suponiendo ACK extremadamente pequeo y el receptor enva el ACK tan pronto como recibe el ltimo bit del paquete. El ACK estar de vuelta en el emisor en t = RTT + L/R = 30,008ms
emisor
L/R RTT + L / R
.008
30.008
= 0.00027
El emisor solo est emitiendo una mnima parte del tiempo que utiliza. Un mensaje de 1KB cada 30 ms -> un throuput de 267Kbps en un enlace de 1Gbps Se manifiesta que el protocolo est desaprovechando el uso de los recursos fsicos.
Capa de transporte
3-44
receptor
RTT
t = RTT + L / R
emisor
L/R RTT + L / R
.008
30.008
= 0.00027
Capa de transporte
3-45
Dos formas gnericas de protocolos con pipelining: GBN (go-Back-N), y SR (selective repeat) de transporte Capa
3-46
receptor
RTT
primer bit del paquete llega Llega ltimo bit,se enva ACK ltimo bit del 2do paquete, se enva ACK ltimo bit del 3er paquete, se enva ACK
sender
3*L/R RTT + L / R
.024
30.008
= 0.0008
Capa de transporte
3-47
ACK(n): se van haciendo confirmaciones (ACKs) acumulativas de todos los paquetes hasta el nmero de secuencia n Pudiera ver ACKs duplicados (ver receptor) Utiliza un temporizador por cada paquete timeout(n): se retransmite el paquete n y todos los paquetes con Capa de transporte 3-48 nmero de secuencia superior en la ventana.
base=1 nextseqnum=1
Espera
rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) base = getacknum(rcvpkt)+1 If (base == nextseqnum) stop_timer else start_timer
Capa de transporte
3-49
rdt_rcv(rcvpkt) && notcurrupt(rcvpkt) && hasseqnum(rcvpkt,expectedseqnum) extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(expectedseqnum,ACK,chksum) udt_send(sndpkt) expectedseqnum++
espera
ACKs: siempre se enva ACK para aquellos paquetes que fueron recibidos correctamente con nmero de secuencia ms alto (ms reciente en orden)
Podra general ACKs duplicados Se necesita slo recordar el nmero de secuencia esperado (expectedseqnum)
Se descartan (no tiene bufer el receptor) Se retransmite ACK al paqute con nmero de secuencia mayor
Capa de transporte 3-50
GBN en accin
emisior receptor
Tamao de ventana = 4
Ver applet
Capa de transporte 3-51
SR:Selective repeat
Evento: Datos de capa superior
Si el prox nmero de secuencia est disponible en la ventana, enviar paquete Reenva paquete n, reinicia temporizador
emisor
Evento: timeout(n)
Marcar el paquete n como recibido Si n es el num secuencia ms pequeo de los paquetes sin confirmar, avanzar la base de la ventana al prximo nmero de secuencia sin confirmar.
Si el paquete n est en [rcvbase, rcvbase+N-1] Enva ACK(n) Si viene fuera de orden: usar buffer Si viene en orden: emitirlo a la capa superior (tambin emitir los que estn en el bufer, en orden), avanzar la ventana al prximo paquete an no recibido Si el paquete esta en [rcvbaseN,rcvbase-1] Confirmar ACK(n) De lo contrario: ignorar
receptor
Capa de transporte
3-54
Capa de transporte
3-55
SR: dilema
Ejemplo:
Num seqs: 0, 1, 2, 3 Tamao ventana=3 El receptor no detecta la diferencia entre los dos escenarios! Incorrectamente se pueden pasar datos duplicados creyendo que son nuevos en (a) Q: qu relacin debiera de
Capa de transporte
3-56
Temas a cubrir
3.1 servicios a nivel de transporte 3.2 multiplexado y /demultiplexado 3.3 transporte sin conexin: UDP 3.4 principios sobre transferencia de datos fiable 3.5 transporte orientado a conexin: TCP
Estructura del segmento Transferencia de datos fiable Control de flujo Gestin de la conexin
TCP: Panorama
Punto-a-punto: Un emisor, un receptor fiable, ordenamiento por bytes: sin lmites de mensajes pipelined: El esquema de control de congestin y flujo en TCP inicializan la ventana
Orientado a conexin:
intercambio de mensajes de control (handshaking ) que inician el estado del emisor y el receptor antes de intercambiar datos.
Flujo controlado:
socket door application writes data TCP send buffer
segment
socket door
source port #
dest port #
sequence number
head not UA P R S F len used
acknowledgement number
Receive window Urg data pnter checksum
# bytes El receptor estar dispuesto a aceptar
Capa de transporte
3-59
Host A
Un usuario Escribe la letra C
Seq=4 2 , A CK =79, d a
Host B
ta = C
Seq=4 3
, A CK = 80
tiempo
3-60
Muy cortos: ocasionan timeouts prematuros Retransmisiones innecesarias Muy largo: ocasionan una reaccin lenta en la prdida de paquetes
Capa de transporte
3-61
Capa de transporte
3-62
300
RTT (milliseconds)
250
200
150
Capa de transporte
3-63
Calculamos cunto se desva el RTTmuestra del RTTestimado: DesvRTT = (1-)*DesvRTT + *|RTTmuestra-RTTEstimado| (tpicamente tenemos, = 0.25) [RFC2988]
Entonces podemos inicializar el intervalo de timeouts:
Temas a cubrir
3.1 servicios a nivel de transporte 3.2 multiplexado y /demultiplexado 3.3 transporte sin conexin: UDP 3.4 principios sobre transferencia de datos fiable 3.5 transporte orientado a conexin: TCP
Estructura del segmento Transferencia de datos fiable Control de flujo Gestin de la conexin
Capa de transporte
3-66
Reconoce la recepcin de bytes con nmeros anteriores a ese. Inicia temporizador si an existen segmentos no reconocidos.
Capa de transporte
3-67
NextSeqNum = InitialSeqNum SendBase = InitialSeqNum loop (forever) { switch(event) event: data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(data) event: timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer event: ACK received, with ACK field value of y if (y > SendBase) { SendBase = y if (there are currently not-yet-acknowledged segments) start timer } } /* end of loop forever */
TCP: emisor
(simplificado)
Comentarios: SendBase-1: refiere al
ltimo byte reconocido acumulativamente
Capa de transporte
3-68
Host B
, 8 byt es da
Host A
Seq=9 2
Host B
, 8 byt es da
Seq=92 timeout
ta
Seq= 1
timeout
loss
Seq=9 2 , 8 byt es da ta
=100 A CK
00, 2 0 byt
ta
ta
es da
0 10 K= 120 AC ACK=
Seq=92 timeout
100 C K=
Seq=9 2
, 8 byt es da
ta
AC
2 K=1
SendBase = 100
SendBase = 120
time
Timeout prematuro
Capa de transporte 3-69
Host B
, 8 byt es da
ta
timeout
Seq=1 0
loss
AC K =120
SendBase = 120
Accin en el receptor
Retrasar ACK. Esperar hasta 500ms la llegada de algn otro segmento en orden. Si el siguiente segmento en orden no llega durante este intervalo, enviar ACK. Enviar inmediatamente un nico ACK acumulado, reconociendo ambos segmentos en orden. Enviar inmediatamente un ACK duplicado, indicando el nmero de secuencia del siguiente byte esperado (el lmite inferior del agujero). Enviar inmediatamente un ACK, si ese segmento arranca en el extremo inferior del agujero Capa de transporte 3-71
Retransmisin rpida
Motivada por que algunos periodos de espera son relativamente largos: Si el emisor recibe 3 ACKs RFC[2581] para los mismos datos, supondr que el segmento despus del dato confirmado se perdi. :
El emisor enva a menudo muchos segmentos de extremo a extremo Si algn segmento se pierde, probablemente habr muchos ACKs duplicados.
Capa de transporte 3-72
Retransmisin rpida
Capa de transporte
3-73
Temas a cubrir
3.1 servicios a nivel de transporte 3.2 multiplexado y /demultiplexado 3.3 transporte sin conexin: UDP 3.4 principios sobre transferencia de datos fiable 3.5 transporte orientado a conexin: TCP
Estructura del segmento Transferencia de datos fiable Control de flujo Gestin de la conexin
Servicio de acoplado de velocidades: acoplar la velocidad del emisor con la tasa de consumo de la aplicacin
Capa de transporte
3-75
Capa de transporte
3-76
Temas a cubrir
3.1 servicios a nivel de transporte 3.2 multiplexado y /demultiplexado 3.3 transporte sin conexin: UDP 3.4 principios sobre transferencia de datos fiable 3.5 transporte orientado a conexin: TCP
Estructura del segmento Transferencia de datos fiable Control de flujo Gestin de la conexin
cliente
server
AC K FIN
close
A CK
closed
Capa de transporte
3-79
server
AC K FIN
closing
Espera temporal
A CK
closed
closed
La espera_temporal permite que el cliente TCP reenve el reconocimiento final en caso de que el ACK se pierda
Capa de transporte
3-80
Capa de transporte
3-81
Temas a cubrir
3.1 servicios a nivel de transporte 3.2 multiplexado y /demultiplexado 3.3 transporte sin conexin: UDP 3.4 principios sobre transferencia de datos fiable 3.5 transporte orientado a conexin: TCP
Estructura del segmento Transferencia de datos fiable Control de flujo Gestin de la conexin
in : original data
out
Host B
Grandes retrasos al estar congestionado C/2 Mxima tasa de transferencia posible Se experimentas grandes retardos en las colas segn la tasa de llegada de paquetes se acerca a la capacidad del enlace
Capa de transporte
3-84
out
Host B
Buffers finitos
Capa de transporte
3-85
In
in Caso a: Consideramos que el emisor sabe cundo se llena el buffer del router = por lo tanto no hay prdida in
Caso b: slo retransmite cuando realmente se perdi un paquete Caso c: retransmite paquetes repetidos debido a expiracin de timeout
R/2 R/2 R/2
Buffers finitos (al llenarse se desechan los paquetes) Hay retransmisin, datos originales = datos originales + retransmitidos =
> out
in
out
out
out
out
R/3
R/4
in
R/2
costos de congestin:
in
R/2
in
R/2
b.
c.
Ms trabajo (retransmisin) La tasa a la cual los datos son entregados a la aplicacin baja debido tambin a retransmisiones innecesarias que no eran prdidas originalmente, pero debido al retardo en el buffer del router para emitirlos el timout lleg en el emisor Capa de transporte 3-86
Host A
Buffer finito
Host B Host C
Capa de transporte
3-87
o u t
Poco trfico
mucho trfico
Otro costo de congestin: Cuando se desechan paquetes, cualquier capacidad de tranmisin utilizada por esos paquetes ha sido un desperdicio.
Con trfico muy alto compitiendo por los routers en comn la productividad de extremo a extremo tiende a caer
Capa de transporte
3-88
Temas a cubrir
3.1 servicios a nivel de transporte 3.2 multiplexado y /demultiplexado 3.3 transporte sin conexin: UDP 3.4 principios sobre transferencia de datos fiable 3.5 transporte orientado a conexin: TCP
Estructura del segmento Transferencia de datos fiable Control de flujo Gestin de la conexin
En general,
rate = CongWin Bytes/sec RTT
El emisor reduce la tasa (CongWin) despus del evento de prdida (congwin=congwin/2) Tres mecanismos:
AIMD (additive increase, multiplicative decrease) slow start Conservador despus de eventos de timeout (tamao de Congwin=1MSS)
Capa de transporte 3-91
TCP: AIMD
Decremento multiplicativo: disminuye a la mitad la CongWin despus de un evento de prdida
congestion window 24 Kbytes
Incremento aditivo: incrementa la CongWin por 1 MSS cada RTT en ausencia de eventos de prdida: avanza con cautela
16 Kbytes
8 Kbytes
time
Ejemplo: MSS = 500 bytes y RTT = 200 mseg Tasa inicial 20 kbps
Capa de transporte
3-93
RTT
cuatro seg
mentos
time
Capa de transporte
3-94
Mejoras
Filosofa:
Despus de 3 ACKs duplicados: CongWin se va a la mitad posteriormente la ventana crece linealmente PERO despus de alcanzado el timeout: CongWin se va a 1 MSS; posteriormente la ventan crece exponencialmente Hasta llegar a un umbral, donde seguir creciendo linealmente
3 ACKs duplicados indican que la red an puede ir haciendo algo limitado timeout antes de 3 ACKs duplicados es algo ms alarmante
Capa de transporte
3-95
Mejoras (cont..)
Ventana de congestin (CongWin)
P: Cundo debiera el crecimiento exponencial pasar a lineal? R: Cuando la CongWin llegue a 1/2 del valor que tena justo antes del timeout. Implementacin:
Ciclo de transmisin
Uso de variable: Threshold En un evento de prdida, la variable Threshold es iniciada a 1/2 del tamao que CongWin tena justo antes del evento de prdida.
Capa de transporte 3-96
Accin del emisor CongWin = CongWin + MSS, If (CongWin > Threshold) set state to Congestion Avoidance CongWin = CongWin+MSS * (MSS/CongWin)
Comentario
Se duplica CongWin cada RTT
Threshold = CongWin/2, CongWin = Threshold, Inicio estado Congestion Avoidance Threshold = CongWin/2, CongWin = 1 MSS, Inicio estado a Slow Start Incrementamos el contador de ACK duplicados para el segmento que est siendo reconocido
Recuperacin rpida, implementando decremento multiplicativo. CongWin will not drop below 1 MSS. Entro a slow start
SS o CA
SS o CA
ACK duplicado
Capa de transporte
3-98
Sea W el tamao de la ventana cuando ocurre una prdida. Cuando la ventana es de tamao W, la capacidad de transferencia es W/RTT Justo despus de la prdida, la ventana cae a W/2, y la capacidad de transferencia a (W/RTT). La capacidad promedio que se puede obtener bajo estas asunciones se extrae tomando los valores de transferencia que tena antes y despus de la falla:
(W/RTT)+(W/2RTT) ------------------------------ = 0.75W/RTT 2
Capa de transporte 3-99
TCP conexin 2
prdida: decrese la ventana en un factor de 2 Evacin de la congestin: incremento aditivo prdida: decrese la ventana en un factor de 2 Evacin de la congestin: incremento aditivo
Conexin 1 throughput
Justicia en TCP
La justicia y el UDP Las aplicaciones multimedia a menudo no usan TCP
No desean que su tasa de trsnferencia sea regulada por el control de congestin
Qu tan justo es el TCP cuando trabaja en aplicaciones que invocan proceso en paralelo? Nada evita que las aplicaciones abran conexiones en paralelo entre 2 hosts. Los navegadores Web lo hacen. ejemplo: enlace con tasa R soportando 9 conexiones;
Entra una nueva aplicacin y pide una conexin TCP, as que obtiene una tasa de R/10 La nueva aplicacin solicita 11 conexiones TCP en paralelo, esa sla aplicacin acaparar R/2 !
Asunciones:
Asumimos un enlace entre el cliente y el servidor con tasa R S: MSS (bits) O: tamao del objeto (bits) Sin retransmisin (sin prdida, sin paquetes corrompidos)
Tamao de la ventana:
Asumimos primero: ventana de congestin esttica, W segmentos Despus analizamos con ventana dinmica, modelando slow start
WS/R > RTT + S/R: El ACK del primer segmento llega antes de que todos los datos de la ventana sean enviados
W=4
Capa de transporte 3-104
W=2
Capa de transporte 3-105
As la latencia tiene 3 componentes: 2RTT para establecer la conexin, O/R tiempo para transmitir el objeto y la suma de todos los tiempos de Parada: 2RTT + O/R + [ S/R + RTT - 2k-1 (S/R)]+
k=1 k-1
[x]+ = max(x,0)
P = min{Q, K 1}
As tenemos que:
Re tardo = 2 RTT +
O S S + P RTT + (2 P 1) R R R
Capa de transporte 3-107
establecimiento de la conexin e inicio de peticin O/R para transmitir el objeto completo tiempo que el servidor para debido a que
WS/R < RTT + S/R
request object
RTT
complete transmission
request object
RTT
retardo =
P O + 2 RTT + idleTime p R p =1
complete transmission
Ejemplo
Tamao del segmento (S) = 536 RTT = 100miliseg Tamao del objeto (O) = 100KB Ventanas que abarca (K) = 8 Latencia mnima: O/R + 2RTT 28,8 seg 8,2 seg 1 seg 0,28 seg Latencia con arranque lento 28,9 seg 8,4 seg 1,5 seg 0,98 seg
P 1 2 5 7
Ejemplo
Tamao del segmento (S) = 536 RTT = 100miliseg Tamao del objeto (O) = 5 KB Ventanas que abarca (K) = 4 Latencia mnima: O/R + 2RTT 1,63 seg 0,6 seg 0,24 seg 0,20 seg Latencia con arranque lento 1,73 seg 0,76 seg 0,52 seg 0,50 seg
P 1 2 3 3
Ejemplo
Tamao del segmento (S) = 536 RTT = 1 seg Tamao del objeto (O) = 5 KB Ventanas que abarca (K) = 4 R 28kbps 100kbps 1 Mbps 10 Mbps O/R 1,43 seg 0.4 seg 40 mseg 4 mseg P 3 3 3 3 Latencia mnima: O/R + 2RTT 3,4 seg 2,4 seg 2,0 seg 2,0 seg Latencia con arranque lento 5,8 seg 5,2 seg 5,0 seg 5,0 seg
El arranque lento puede incrementar significativamente la latencia cuando el tamao del objeto es relativamente pequeo y el RTT es relativamente grande. Cosa que ocurre con mucha frecuencia en la Web. Capa de transporte 3-112
Modelando HTTP
Asumimos que una pgina Web consiste de: 1 pgina HTML base (de tamao O bits) M imgenes (cada una de tamao O bits) HTTP No-persistente: M+1 conexiones TCP en serie
HTTP persistente: 2 RTT para solicitar y empezar a recibir el archivo HTML base 1 RTT para solicitar las M imgenes HTTP Persistente con X conexiones paralelas Supongamos M/X como entero. 1 conexin TCP para el archivo base M/X conjuntos de conexiones paralelas por imagen
Donde se presentan anchos de banda bajos, el tiempo de respuesta y de conexin es dominado por el tiempo de transmisin Las conexiones persistentes tienen una mejora mnima usando conexiones paralelas
Tiempo de respuesta en HTTP (en segundos) RTT =1 seg, O = 5 Kbytes, M=10 and X=5
70 60 50 40 30 20 10 0 no-persistente persistente no-persist paralela
28 100 1 Mbps 10 Kbps Kbps Mbps Para RTTs grandes, el tiempo de respuesta es dominado por los retardos en establecimiento y slow start de TCP. Las conexiones persistentes ofrecen ahora una importante mejora: especialmente en redes con alto retraso y ancho de banda
Capa de transporte 3-115
Resumn
Principios detrs de los servicios de transporte: multiplexing, demultiplexing Transferencia de datos fiable Control de flujo Control de congestin Formas de implementarse en internet: UDP TCP
A continuacin: Dejamos el entorno de la red (capas de aplicacin y transporte) Continuamos con el nucleo de la red