Post on 30-Sep-2018
transcript
3-1
Capiacutetulo 3La capa de transporte
Redes de computadoras Un enfoque descendente 5a edicioacuten Jim Kurose Keith RossPearson Educacioacuten 2010
A note on the use of these ppt slidesWersquore making these slides freely available to all (faculty students readers) Theyrsquore in PowerPoint form so you can add modify and delete slides (including this one) and slide content to suit your needs They obviously represent a lot of work on our part In return for use we only ask the following
If you use these slides (eg in a class) in substantially unaltered form that you mention their source (after all wersquod like people to use our book)
If you post any slides in substantially unaltered form on a www site that you note that they are adapted from (or perhaps identical to) our slides and note our copyright of this material
Thanks and enjoy JFKKWR
All material copyright 1996-2010JF Kurose and KW Ross All Rights Reserved
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-2
Capiacutetulo 3 La capa de transporteObjetivos
comprender los principios que estaacuten tras los servicios de la capa de transporte
multiplexardes-multiplexartransferencia de datos fiablecontrol de flujocontrol de congestioacuten
conocer los protocolos de transporte de Internet
UDP transporte sin conexioacutenTCP transporte orientado a conexioacutencontrol de flujo TCPcontrol de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-3
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacuten transferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-4
servicios y protocolos de transporteproporcionar comunicacioacutenloacutegica entre procesos en ejecucioacuten en diferentes hostslos protocolos de transporte corren en sistemas terminales
emisor divide mensajes en segmentos los pasa a la capa de redreceptor reensambla segmentos en mensajes los pasa a la capa de aplicacioacuten
maacutes de un protocolo disponible para las aplicaciones
Internet TCP y UDP
aplicacioacutentransporte
redenlacefiacutesica
aplicacioacutentransporte
redenlacefiacutesica
transporte loacutegico extr-extr
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-5
capa de transporte capa de red
encapsulacioacutenarquitectura en capascapa de redcomunicacioacuten loacutegica entre hostscapa de transportecomunicacioacuten loacutegica entre procesos
se basa en y ampliacutea los servicios de la capa de red
analogiacutea domeacutestica12 chicos enviacutean cartas a 12
chicosprocesos = chicosmensajes = cartas en sobreshosts = casasprotocolo de transporte = Ana y Juan que reparten a sus hermanos respectivosprotocolo de red = Correos
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-6
protocolos de capa de transporte de Internet
distribucioacuten fiable en orden (TCP)
control de congestioacutencontrol de flujoestablecimiento de conexioacuten
distribucioacuten no fiable fuera de orden UDP
extensioacuten ldquosin virgueriacuteasrdquode IP ldquohaz lo que puedasrdquo
servicios no disponibles garantiacutea de retardo miacutenimogarantiacutea de ancho de banda miacutenimo
aplicacioacutentransporte
redenlacefiacutesica
redenlacefiacutesica
redenlacefiacutesica
redenlacefiacutesica
redenlacefiacutesica
redenlacefiacutesica
redenlacefiacutesica
aplicacioacutentransporte
redenlacefiacutesica
transporte loacutegico extr-extr
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-7
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacuten transferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-8
Multiplexacioacutendesmultiplexacioacuten
aplicacioacuten
transporte
red
enlace
fiacutesica
P1 aplicacioacuten
transporte
red
enlace
fiacutesica
aplicacioacuten
transporte
red
enlace
fiacutesica
P2P3 P4P1
host 1 host 2 host 3
= proceso= socket
entregar segmentos recibidosal socket correcto
Desmultiplexacioacuten en el destinoreunir datos de muacuteltiplessockets empaquetarlos con el encabezado (usado luego para desmultiplexar)
Multiplexacioacuten en el emisor
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
socket = puerta de comunicacioacuten red-proceso
Protocolo de red IP
El protocolo de Internet para la capa de red se llama IPSe encarga de dar una conexioacuten loacutegica entre hostsEntrega datagramas de un host a otro pero sin garantiacuteasCada host se identifica con una direccioacuten de red que llamamos direccioacuten IP
3-9Capa de TransporteRauacutel Duraacuten Nacho Peacuterez v14
3-10
Coacutemo funciona la desmultiplexacioacutenel host recibe datagramas IP
cada datagrama tiene IP de origen e IP de destinocada datagrama lleva un segmento de la capa de transportecada segmento tiene nordm de puerto de origen y de destino
el host usa IP y nordm de puerto para dirigir el segmento al socket apropiado
nordm puerto org nordm puerto dest
32 bits
datos de la aplicacioacuten (mensaje)
otros campos encabezado
formato de segmento TCPUDP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-11
desmultiplexacioacuten sin conexioacuten
recordatorio crear sockets con nuacutemeros de puerto locales
DatagramSocket mySocket1 = new DatagramSocket(12534)
DatagramSocket mySocket2 = new DatagramSocket(12535)
recordatorio al crear un datagrama para enviar por un socket UDP hay que especificar
(IP dest nordm puerto dest)
cuando un host recibe un segmento UDP
comprueba el nordm de puerto destino del segmentoredirige el segmento UDP al socket con ese nordm de puerto
datagramas IP con diferente IP origen yo nordm puerto origen se dirigen al mismo socket
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-12
desmultiplexacioacuten sin conexioacuten (cont)
DatagramSocket serverSocket = new DatagramSocket(6428)
IPcliente B
P2
IP cliente A
P1P1P3
IP servidor C
PO 6428PD 9157
PO 9157PD 6428
PO 6428PD 5775
PO 5775PD 6428
PO proporciona ldquodireccioacuten de retornordquo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-13
Desmultiplexacioacuten orientada a conexioacuten
un socket TCP se identifica por una 4-upla
IP origennordm puerto origenIP destinonordm puerto destino
el receptor usa los 4 valores para redirigir el segmento al socket adecuado
el host servidor debe soportar varios sockets TCP simultaacuteneos
cada socket identificado por su propia 4-upla
los servidores web tienen sockets diferentes para cada cliente que se conecta
HTTP no persistente tendraacute un socket para cada solicitud
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-14
Desmultiplexacioacuten orientada a conexioacuten (cont)
IPclienteB
P1
IPcliente A
P1P2P4
IPservidor C
P5 P6 P3
PO 9157PD 80IP-O AIP-DC
PO 9157PD 80
IP-DCIP-O B
PO 5775PD 80
IP-DCIP-O B
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-15
desmultiplexacioacuten orientada a conexioacuten Web Server con hebras
IP clienteB
P1
IPcliente A
P1P2
IPservidor C
SP 9157DP 80
SP 9157DP 80
P4 P3
D-IPCS-IP AD-IPC
S-IP B
SP 5775DP 80
D-IPCS-IP B
PO 9157PD 80IP-O AIP-DC
PO 5775PD 80
IP-DCIP-O B
PO 9157PD 80
IP-DCIP-O B
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
Sockets en clienteservidor UDP
socket()
sendto()
recvfrom()
close()sendto()
recvfrom()
bind()
socket()
Cliente UDP Servidor UDP
procesar pedidohellip
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte 3-16
Sockets en clienteservidor TCP
socket()
write()
read()
close()
accept()
listen()
bind()
socket()
Cliente TCP Servidor TCP
connect()
close()
write()
read()
read()
procesar pedidohellip
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte 3-17
3-18
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacutentransferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-19
UDP User Datagram Protocol [RFC 768]protocolo de transporte de Internet sin adornos ldquocon lo puestordquoal ser un servicio de ldquohaz lo que puedasrdquo los segmentos UDP pueden
perderseser entregados fuera de orden a la aplicacioacuten
sin conexioacutensin establecimiento de conexioacuten entre el emisor y el receptor UDPcada segmento UDP se trata de forma independiente de los otros
iquestPor queacute existe UDPno hay establecimiento de la conexioacuten (que puede antildeadir retardo)sencillo no hay estado ni en el emisor ni en el receptorencabezado pequentildeono hay control de congestioacuten UDP puede disparar todo lo raacutepido que se quiera
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-20
UDP maacutesa menudo usado para aplicaciones de lsquostreamingrsquomultimedia
tolerante a peacuterdidassensible a la velocidad
otros usos de UDPDNSSNMP
transferencia fiable sobre UDP antildeadir fiabilidad en la capa de aplicacioacuten
recuperacioacuten de errores especiacutefica para la aplicacioacuten
nordm puerto org nordm puerto dest
32 bits
datos de la aplicacioacuten(mensaje)
formato de segmento UDP
long checksumLongitud en
bytes del segmento
UDP incluido encabezado
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
0 311615
3-21
UDP checksum
Emisortrata contenidos del segmento como secuencia de enteros de 16 bitschecksum suma (en compl a 1) del contenido del segmentoel emisor pone el checksum en el campo UDP correspondiente
Receptorcalcula el checksum del segmento recibidocomprueba si el valor calculado = campo checksum
NO - error detectadoSIacute ndash error no detectado
iquestPuede haber errores aun asiacute Lo veremos maacutes adelante
Objetivo detectar ldquoerroresrdquo (pej bits alterados) en el segmento transmitido
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-22
Ejemplo de Checksum InternetNota iexclsuma en complemento a 1Ejemplo sumar dos enteros de 16 bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
acarreo
sumachecksum
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-23
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacutentransferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-24
Principios de transferencia de datos fiable
es importante en las capas de aplicacioacuten transporte y enlaceiexclen el ldquotop-10rdquo de las cuestiones importantes en redes
las caracteriacutesticas del canal no fiable determinaraacuten la complejidad del protocolo de transferencia de datos fiable (rdt lsquoreliable data transfer protocolrsquo)
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-25
Principios de transferencia de datos fiable
es importante en las capas de aplicacioacuten transporte y enlaceiexclen el ldquotop-10rdquo de las cuestiones importantes en redes
las caracteriacutesticas del canal no fiable determinaraacuten la complejidad del protocolo de transferencia de datos fiable (rdt lsquoreliable data transfer protocolrsquo)
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-26
Principios de transferencia de datos fiable
es importante en las capas de aplicacioacuten transporte y enlaceiexclen el ldquotop-10rdquo de las cuestiones importantes en redes
las caracteriacutesticas del canal no fiable determinaraacuten la complejidad del protocolo de transferencia de datos fiable (rdt lsquoreliable data transfer protocolrsquo)
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
rdt_send() llamada desde arriba (pej por la apl) Se le
pasan los datos a entregar al nivel superior del receptor
3-27
transferencia de datos fiable preliminares
ladoemisioacuten
ladorecepcioacuten
udt_send() llamado por rdt para transferir paquete por canal no fiable al receptor
rdt_rcv() llamado cuando el paquete llegue al extremo de
recepcioacuten del canal
deliver_data() llamada por rdt para entregar datos
al nivel superior
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-28
transferencia de datos fiable preliminaresVamos a
desarrollar el emisor y el receptor de un protocolo de transf de datos fiable (rdt) paso a pasoconsiderar soacutelo transferencia de datos unidireccional
iexclpero el control se transmitiraacute en ambas direccionesusar maacutequinas de estados finitos (MEFs) para definir emisor y receptor
estado1
estado2
evento que causa la transicioacutenaccioacuten tomada en la transicioacuten
estado desde este estado el siguiente
se determina uacutenicamente por el
siguiente evento
eventoacciones
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-29
Rdt10 transferencia fiable en canal fiable
canal subyacente perfectamente fiableno hay errores de bitno hay peacuterdida de paquetes
MEF diferente para emisor y receptorel emisor enviacutea dato al canal subyacenteel emisor lee datos del canal subyacente
esperarllamada de arriba packet = make_pkt(data)
udt_send(packet)
rdt_send(data)extract (packetdata)deliver_data(data)
esperar llamada de abajo
rdt_rcv(packet)
emisor receptor
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-30
Rdt20 canal con errores de bitel canal subyacente puede alterar bits del paquete
usar el checksum para detectar errores de bitla cuestioacuten iquestcoacutemo recuperarse de erroresreconocimientos(lsquoacknowledgementsrsquo ACKs) el receptor indica expliacutecitamente que la recepcioacuten fue buenareconocimientos negativos (NAKs) el receptor indica expliacutecitamente que el paquete teniacutea erroresel emisor retransmite el paquete si recibe un NAK
nuevos mecanismos en rdt20 (sobre rdt10)deteccioacuten de erroresrealimentacioacuten del receptormensajes de control (ACKNAK) del receptor al emisor
iquestCoacutemo se recuperan los humanos de ldquoerroresrdquodurante la conversacioacuten
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-31
Rdt20 canal con errores de bitel canal subyacente puede alterar bits del paquete
usar el checksum para detectar errores de bitla cuestioacuten iquestcoacutemo recuperarse de erroresreconocimientos(lsquoacknowledgementsrsquo ACKs) el receptor indica expliacutecitamente que la recepcioacuten fue buenareconocimientos negativos (NAKs) el receptor indica expliacutecitamente que el paquete teniacutea erroresel emisor retransmite el paquete si recibe un NAK
nuevos mecanismos en rdt20 (sobre rdt10)deteccioacuten de erroresrealimentacioacuten del receptormensajes de control (ACKNAK) del receptor al emisor
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-32
rdt20 especificacioacuten de la MEF
esperar llamada de
arriba
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
esperar ACK o NAK
esperar llamada de
abajoemisor
receptorrdt_send(data)
Λ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-33
rdt20 funcionamiento sin errores
esperar llamada de
arriba
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
esperar ACK o NAK
esperar llamada de
abajo
rdt_send(data)
Λ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-34
rdt20 caso de error
esperar llamada de
arriba
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
esperar ACK o NAK
esperar llamada de
abajo
rdt_send(data)
Λ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-35
iexcl rdt20 tiene un defecto fatal
iquestQueacute ocurre si ACK o NAK se corrompeniexcliexclel emisor no sabe queacuteocurrioacute en el receptorno es posible simplemente retransmitir se pueden crear duplicados
Manejo de duplicados el emisor retransmite el paquete actual si ACK o NAK no llegan bienel emisor antildeade un nuacutemero de secuencia a cada paqueteel receptor descarta (no entrega hacia arriba) el paquete duplicado
el emisor enviacutea un paquetey espera la respuesta delreceptor
parada y espera
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-36
rdt21 el emisor maneja ACKNAKs erroacuteneos
esperar llamada 0 de arriba
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
esperar ACK o NAK 0 udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isNAK(rcvpkt) )
sndpkt = make_pkt(1 data checksum)udt_send(sndpkt)
rdt_send(data)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isNAK(rcvpkt) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt)
esperar llamada 1 de arriba
esperar ACK o NAK 1
ΛΛ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-37
rdt21 el receptor maneja ACKNAKs erroacuteneos
esperar 0 de abajo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
esperar 1 de abajo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-38
rdt21 discusioacuten
Emisornordm secuencia antildeadido al paquete2 nuacutemeros valen (01) iquestPor queacutecomprobar si el ACKNAK recibido corruptoel doble de estados
el estado debe ldquorecordarrdquo si el paquete ldquoactualrdquo tiene nordm sec 0 oacute1
Receptordebe comprobar si el paquete recibido es duplicado
el estado indica si se espera el paquete 0 oacute 1
nota el receptor no puede saber si su uacuteltimo ACKNAK se recibioacute bien en el emisor
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-39
rdt22 un protocolo sin NAK
la misma funcionalidad que rdt21 usando soacutelo ACKsen lugar de NAK el receptor enviacutea ACK para el uacuteltimo paquete recibido bien
el receptor debe incluir expliacutecitamente el nordm de secuencia del paquete al que se refiere el ACK
un ACK duplicado en el emisor resulta en la misma accioacuten que un NAK retransmitir paquete actual
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-40
rdt22 fragmentos del emisor y el receptor
esperar llamada 0 de arriba
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
esperar ACK 0
fragmento MEF emisor
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
esperar 0 de abajo
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)fragmento MEF
receptor
Λ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-41
rdt30 canales con errores y peacuterdidas
Nueva suposicioacuten canal subyacente tambieacuten puede perder paquetes (datos o ACKs)
las retransmisiones de checksum nordm secuencia ACKs ayudan pero no son suficiente
liacutenea de trabajo emisor espera un tiempo ldquorazonablerdquo al ACKretransmite si no recibe ACK en ese tiemposi el paquete (o ACK) soacutelo se retrasoacute (no se perdioacute)
las retransmisiones estaraacuten repetidas pero con el nordm secuencia esto estaacute resueltoel receptor debe indicar nordm secuencia del paquete al que se aplica el ACK
requiere un temporizadorRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-42
rdt30 emisorsndpkt = make_pkt(0 data checksum)udt_send(sndpkt)start_timer
rdt_send(data)
espe-rar
ACK 0
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt1) )
esperar llamada 1 de arriba
sndpkt = make_pkt(1 data checksum)udt_send(sndpkt)start_timer
rdt_send(data)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt0) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)
stop_timerstop_timer
udt_send(sndpkt)start_timer
timeout
udt_send(sndpkt)start_timer
timeout
rdt_rcv(rcvpkt)
esperar llamada 0 de arriba
esper-rar
ACK 1
Λrdt_rcv(rcvpkt)
ΛΛ
Λ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-43
rdt30 funcionando
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-44
rdt30 funcionando
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-45
Rendimiento del rdt30
rdt30 funciona pero el rendimiento es muy malopej enlace de 1Gbs 15ms retardo prop paquete 8k bits
si RTT=30 ms 1 paquete de 1KB cada 30 sg -gt 33KBs de 1Gbpsiexcliexclel protocolo de red limita el uso de los recursos fiacutesicos
dosmicrosegun 8bps10bits 8000
9 ===RLdtrans
U emisor utilizacioacuten ndash fraccioacuten de tiempo que el emisor estaacuteocupado emitiendo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-46
rdt30 funcionamiento de parada y espera
primer bit transmitido t = 0
emisor receptor
RTT
uacuteltimo bit transmitido t = L R
llega primer bitllega uacuteltimo bit enviar ACK
llega ACK enviar siguiente paquete t = RTT + L R
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-47
Protocolos segmentados (en cadena)segmentar el emisor permite que haya muacuteltiples
paquetes ldquoen caminordquo pendientes de ACKel rango de nordm de secuencia debe aumentarsehay que antildeadir buacutefferes en el emisor yo el receptor
hay dos formas geneacutericas de protocolos segmentados retroceder N (lsquogo-Back-Nrsquo) y repeticioacuten selectiva (lsquoselective repeatrsquo)
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-48
segmentacioacuten uso mejorado
primer bit transmitido t = 0
emisor receptor
RTT
uacuteltimo bit transmitido t = L R
llega el primer bitllega uacuteltimo bit 1er paquete enviar ACK
llega ACK enviar siguiente paquete t = RTT + L R
llega uacuteltimo bit 2ordm paquete enviar ACKllega uacuteltimo bit 3er paquete enviar ACK
iexcliexclMejora en la utilizacioacuten en un factor de 3
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-49
Protocolos segmentados
Retroceder N vista globalel emisor puede tener hasta N paquetes pendientes de ACKel receptor soacutelo enviacutea ACKs acumulativos
no lo enviacutea para un paquete si hay una laguna
el emisor tiene un temporizador para el paquete maacutes antiguo sin ACK
si llega a 0 retransmitir paquetes sin ACK
Repeticioacuten selectiva vista globalel emisor puede tener hasta N paquetes pendientes de ACKel receptor enviacutea ACK para cada paqueteel emisor mantiene un temporizador para cada paquete sin ACK
si llega a 0 retransmitir soacutelo paquete sin ACK
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-50
Retroceder N (GBN)Emisor
nordm de secuencia de k bits en cabecera del paqueteventana de hasta N paquetes consecutivos sin ACK
ACK(n) ACK para todos los paquetes hasta nordm sec n (inclusive) ldquoACK acumulativordquo
puede recibir ACKs duplicados (ver receptor)temporizador para cada paquete en camino timeout(n) retransmitir paquete n y todos los de mayor nordm sec en la ventanaRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-51
GBN MEF ampliada para el emisor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-52
GBN MEF ampliada del receptor
Enviar ACK para paquete correcto con mayor nordm de secuencia en orden
se pueden generar ACKs duplicadossoacutelo hay que recordar expectedseqnum
paquete fuera de ordendescartar (no se guarda) -gt iexcliexclno hay buffer en el receptorReenviar ACK para paquete con mayor nordm secuencia en orden
Wait
udt_send(sndpkt)default
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(expectedseqnumACKchksum)
Λ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-53
GBN enfunciona-miento
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-54
Repeticioacuten selectiva (SR)
el receptor enviacutea ACK individual para cada paquete correcto
se deben guardar los paquetes en buffers seguacuten sea necesario para entregarlos en orden a la capa superior
el emisor soacutelo reenviacutea paquetes para los que no reciba ACK
un temporizador para cada paquete en caminoventana de emisor
hay N nordm de secuencia consecutivosde nuevo limita nordmsec de los paquetes en camino
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-55
Repeticioacuten selectiva ventanas de emisor y receptor
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-56
Repeticioacuten selectiva
datos de arribasi sig nordm sec en la ventana vaciacuteo enviar paquete
timeout(n)reenviar paquete n reiniciar temporizador
ACK(n) en [sendbasesendbase+N]
marcar paquete n como recibidosi n era el paquete sin ACK con menor nordm sec avanzar el inicio de la ventana al siguiente nordm sec sin ACK
emisorpaquete n en [rcvbase rcvbase+N-1]
enviar ACK(n)fuera de orden guardar en bufferen orden entregar (junto con los previamente guardados por fuera de orden) avanzar ventana al siguiente pendiente de recibir
paquete n en [rcvbase-Nrcvbase-1]
ACK(n)otro caso
ignorar
receptor
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-57
repeticioacuten selectiva en funcionamiento
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-58
Repeticioacuten selectivadilema
Ejemplo nos sec 0 1 2 3tamantildeo ventana=3
iexclel receptor no ve diferencia entre ambos casosen (a) pasa datos repetidos por nuevos de forma incorrecta
P iquestrelacioacuten entre nordm de nos de secuencia vaacutelidos y tamantildeo de la ventanaRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-59
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacuten transferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-60
TCP Visioacuten global RFCs 793 1122 1323 2018 2581
datos full duplexflujo de datos bidireccional en la misma conexioacutenMSS Maacuteximo tamantildeo de segmento (lsquomaximum segment sizersquo)
orientado a conexioacutenestablecimiento conexioacuten (intercambio de mensajes) inicializa estados antes del intercambio de datos
con control de flujoel emisor no satura al receptor
punto a puntoun emisor un receptor
flujo de bytes fiable en orden
no hay ldquoliacutemites de mensajerdquosegmentado
el control de flujo y congestioacuten de TCP fijan el tamantildeo de la ventanabuffers de emisioacuten y recepcioacuten
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-61
estructura del segmento TCP
nordm puerto origen nordm puerto dest
32 bits
datosaplicacioacuten
(long variable)
nordm secuencianordm ACK
ventana recepcioacutenpuntero datos urgchecksum
FSRPAUlong encab
notused
Opciones (long variable)
URG datos urgentes(la aplicacioacuten debe
hacer algo)ACK nordm ACK
vaacutelidoPSH push enviar
estos datos ya a laaplicacioacuten
(el programador no puede manejarlo)
RST SYN FINestab conexioacuten
(comandos estab cerrar)
nordm bytes que el receptorestaacute dispuestoa aceptar
contados en bytes de datos(iexcliexclno segmentos)
checksum Internet
(como en UDP)
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
0 15 16 31
3-62
TCP nuacutems secuencia y ACKsnos secuencia
ldquonordmrdquo flujo de bytes del 1er byte de datos del segmento
ACKsnordm sec del siguiente byte esperado de la otra parteACK acumulativo
P coacutemo se tratan los segmentos fuera de orden
R la especificacioacuten de TCP no lo dice lo que haga el implementador
Host A Host B
Seq=42 ACK=79 data = lsquoCrsquo
Seq=79 ACK=43 data = lsquoCrsquo
Seq=43 ACK=80
Usuarioescribe
lsquoCrsquo
el host enviacuteaACK por ladevolucioacuten
de lsquoCrsquo
el host enviacutea ACK por lsquoCrsquodevuelve lsquoCrsquo
tiempoejemplo sencillo de telnet
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-63
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacutentransferencia de datos fiable control de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-64
TCP gestioacuten de la conexioacutenRecordatorio en TCP emisor y
receptor establecen una ldquoconexioacutenrdquo antes de intercambiar segmentos de datosinicializar variables TCP
nos de secuenciabuffers info de control de flujo (pej RcvWindow)
el cliente inicia la conexioacutenSocket clientSocket = new Socket(rdquonombrehostrdquonumero puerto)
el servidor el cliente contacta con eacutelSocket connectionSocket = welcomeSocketaccept()
Establecimiento en 3 pasos
Paso 1 el cliente envia segmento SYN al servidor
especifica nordm secuencia inicialsin datos
Paso 2 el servidor recibe SYN responde con segmento SYNACK
el servidor crea buffersespecifica el nordm sec inicial del servidor
Paso 3 el cliente recibe SYNACK responde con segmento ACK que puede contener datos
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-65
TCP gestioacuten de la conexioacuten (cont)
Cerrar una conexioacuten
el cliente cierra el socketclientSocketclose()
Paso 1 el sistema terminal del cliente enviacutea el segmento de control TCP FIN al servidor
Paso 2 el servidor recibe FIN responde con ACK Cierra la conexioacuten enviacutea FIN
cliente
FIN
servidor
ACK
ACK
FIN
cerrar
cerrar
cerrado
espe
ra
tem
pori
zada
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-66
TCP gestioacuten de la conexioacuten (cont)
Paso 3 el cliente recibe FIN responde con ACK
entra en ldquoespera temporizadardquo ndashresponderaacute con ACK a los FINs que reciba
Paso 4 el servidor recibe ACK Conexioacuten cerrada
Nota con una pequentildea modificacioacuten puede manejar FINs simultaacuteneos
cliente
FIN
servidor
ACK
ACK
FIN
cerrando
cerrando
cerrada
espe
ra
tem
pori
zada
cerrada
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-67
TCP gestioacuten de la conexioacuten (cont)
ciclo de vidade cliente TCP
ciclo de vidade servidor TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-68
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacutentransferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-69
TCP transferencia de datos fiable
TCP crea servicio rdtsobre el servicio no fiable de IPsegmentos en cadenaacks acumulativosTCP usa un uacutenico temporizador de retransmisioacuten
retransmisiones disparadas por
eventos de temporizador a ceroACKs duplicados
inicialmente considerar emisor TCP simplificado
ignorar ACKs duplicadosignorar control de flujo congestioacuten de flujo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-70
eventos de emisioacuten TCPdatos recibidos de la
aplicacioacutencrear segmento con nordmsecnordm sec es el nordm del 1er byte del segmento dentro del flujo de bytesiniciar temporizador si no lo estaacuteintervalo de expiracioacuten TimeOutInterval
lsquotimeoutrsquo (expiracioacuten)retransmitir segmento que la provocoacutereiniciar temporizador
ACK recibidosi se refiere a segmentos sin ACK previo
actualizar aquellos a los que les falta el ACKiniciar temporizador si hay segmentos pendientes
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-71
emisor TCP (simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (siempre) switch(suceso)
suceso datos recibidos de la aplicacioacuten de capa superiorcrear segmento TCP con nordm sec NextSeqNum if (temporizador no en marcha)
iniciar temporizadorpasar segmento a IP NextSeqNum = NextSeqNum + length(data)
suceso temporizador expiroacuteretransmitir segmento sin ACK con el menor nordm sec iniciar contador
suceso recibido ACK con valor del campo ACK == yif (y gt SendBase)
SendBase = yif (hay segmentos sin ACK)
iniciar temporizador
fin de loop siempre
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-72
TCP situaciones para retransmisioacutenHost A
Seq=100 20 bytes data
ACK=100
tiempotimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq=
92 t
imeo
ut
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
peacuterdida
tim
eout
situacioacuten de ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tiempo
Seq=
92 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
SendBase= 100
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-73
TCP situaciones para retransmisioacuten (maacutes)Host A
Seq=92 8 bytes data
ACK=100
peacuterdida
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
tiempo
SendBase= 120
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-74
generacioacuten de ACK en TCP [RFC 1122 RFC 2581]
Evento en Receptor
Llegada de segmento en orden connordm sec esperado Todos hasta elnordm sec esperado ya tienen ACK
Llegada de segmento en orden connordm sec esperado Hay otro seg en orden esperando transm de ACK
Llegada de nordm de sec fuera de orden mayor que el esperado Detectada laguna
Llegada de segmento que comple-ta parcialmente una laguna
Receptor TCP accioacuten
ACK retardado Esperar hasta 500msal siguiente segmento Si no llega enviarACK
Inmediatamente enviar ACK acumulativopara ambos segmentos
Inmediatamente enviar ACK duplicadoindicando nordm sec del siguiente byte esperado
Inmediatamente enviar ACK suponiendo que el segmento empieza en el liacutemite inferior de la laguna
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-75
Retransmisioacuten raacutepida
periacuteodo de expiracioacuten a menudo relativamente largo
largo retardo antes de reenviar el paquete perdido
se detectan segmentos perdidos por ACKs repetidos
el emisor a menudo enviacutea varios segmentos seguidossi se pierde un segmento seguramente habraacute varios ACKs repetidos
si el emisor recibe 3 ACKs por los mismos datos supone que el segmento de despueacutes de los datos con ACK se perdioacute
retransmisioacuten raacutepida reenviar segmento antes de que expire el temporizador
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-76
Host A
tim
eout
Host B
tiempo
X
reenviar 2ordm segmento
Figura 337 Reenviar segmento tras triple ACKRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-77
suceso recibido ACK con campo ACK con valor == s if (s gt SendBase)
SendBase = sif (hay segmentos pendientes de ACK)
iniciar temporizador
else incrementar cuenta de ACKs duplicados recibidos para s if (cuenta de ACKs duplicados para s == 3)
reenviar segmento con nordm sec s
Algoritmo de retransmisioacuten raacutepida
un ACK duplicado paraun segmento ya con ACK
retransmisioacuten raacutepida
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
Algoritmo de Nagle [RFC896]
Las conexiones interactivas (ssh telnet) suelen enviar segmentos con muy pocos datos (uno dos bytes)
iexclPeacuterdida de eficienciaEs maacutes interesante reunir varios datos procedentes de la aplicacioacuten y mandarlos todos juntosEl algoritmo de Nagle indica que no se enviacuteen nuevos segmentos mientras queden reconocimientos pendientes
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte 3-78
Algoritmo de Nagle [RFC896]
Evento en emisor
Llegada de datos de la aplicacioacutenHay ACKs pendientes
Llegada de un ACK pendiente
Llegada de datos de la aplicacioacutenNo hay ACKs pendientes
Llegada de datos de la aplicacioacutenNo queda sitio en el buffer delemisor
Accioacuten en emisor
Acumular datos en el buffer del emisor
Inmediatamente enviar todos los segmen-tos acumulados en buffer
Inmediatamente enviar datos al receptor
Inmediatamente enviar datos si lo permi-te la ventana aunque no se hayan reci-bido ACKs previos
Capa de Transporte 3-79Rauacutel Duraacuten Nacho Peacuterez v14
3-80
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacutentransferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-81
en TCP el receptor tiene un buffer de recepcioacuten
servicio de equilibrado de velocidad equilibrar la velocidad de enviacuteo a la de la aplicacioacuten vaciando el buffer de recepcioacutenla aplicacioacuten puede ser
lenta leyendo del buffer
el emisor no saturaraacuteel buffer del receptor
a base de enviar mucho muy seguido
control de flujoTCP Control de flujo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-82
TCP control de flujo coacutemo funciona
(suponer que el receptor TCP descarta segmentos fuera de orden)hay sitio en el buffer
RcvWindow = RcvBuffer -[LastByteRcvd - LastByteRead]
el receptor anuncia el espacio libre incluyendo el valor RcvWindow en los segmentosel emisor limita los datos sin ACK a RcvWindow
garantiza que el buffer de recepcioacuten no se desborda
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-83
TCP lsquoRound Trip Timersquo y lsquoTimeoutrsquo
P iquestcoacutemo fijar el tiempo de lsquotimeoutrsquo de TCPmaacutes que RTT
pero RTT variacuteasi demasiado corto lsquotimeoutrsquo prematuro
retransmisiones innecesarias
si demasiado largo reaccioacuten lenta a peacuterdidas
P iquestcoacutemo estimar RTTSampleRTT tiempo medido desde transmisioacuten de un segmento hasta recepcioacuten de ACK
ignorar retransmisionesSampleRTT variaraacute queremos un valor maacutes ldquoestablerdquo
promedio de varias mediciones recientes no el valor actual
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-84
TCP lsquoRound Trip Timersquo y lsquoTimeoutrsquo
EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT
media moacutevil ponderada exponencialla influencia de una muestra pasada decrece exponencialmentevalor tiacutepico α = 0125
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-85
Ejemplo de estimacioacuten de RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106time (seconnds)
RTT
(mill
iseco
nds)
SampleRTT Estimated RTT
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-86
TCP lsquoRound Trip Timersquo y lsquoTimeoutrsquoFijar el tiempo de expiracioacuten (lsquotimeoutrsquo)
EstimatedRTT maacutes ldquomargen de seguridadrdquogran variacioacuten en EstimatedRTT -gt mayor margen de seguridad
primero estimar cuaacutento SampleRTT se desviacutea de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-β)DevRTT +β|SampleRTT-EstimatedRTT|
(tiacutepicamente β = 025)
Entonces fijar el tiempo de expiracioacuten
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
Algoritmo de Karn
Si recibimos el reconocimiento de un paquete retransmitido no tenemos forma de saber a cuaacutel de las retransmisiones corresponde ese reconocimientoPor ello se ignoran los paquetes retransmitidos a la hora de computar el RTTEste procedimiento se denomina algoritmo de Karn
3-87Capa de TransporteRauacutel Duraacuten Nacho Peacuterez v14
3-88
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacuten transferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-89
Principios de control de la congestioacuten
Congestioacuteninformal ldquodemasiadas fuentes enviando demasiados datos demasiado deprisa para que la red lo pueda asimilarrdquoiexcliexcldiferente a control de flujosiacutentomas
paquetes perdidos (desbordamiento de bufferes en los routers)grandes retardos (encolado en los bufferes de los routers)iexcliexclun problema ldquotop-10rdquo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-90
Formas de abordar el control de congestioacuten
control de terminal a terminalno hay realimentacioacuten expliacutecita de la redla congestioacuten se deduce por el retardo y las peacuterdidas observadas por los terminaleseste es el meacutetodo de TCP
control asistido por la redlos routers proporcionan realimentacioacuten a los terminales
un bit que indica la congestioacuten (SNA DECnet TCPIP ECN ATM)indicacioacuten expliacutecita de la tasa a la que el emisor deberiacutea enviar
Dos formas principales de abordarla
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-91
Caso de estudio servicio ABR de las redes ATM
ABR lsquoAvailable Bit Ratersquo(Tasa de bits disponible)
ldquoservicio elaacutesticordquosi la ruta del emisor ldquoinfra-cargadardquo
el emisor deberiacutea usar el ancho de banda disponible
si la ruta del emisor estaacutecongestionada
el emisor se limita a la tasa garantizada
ceacutelulas RM (lsquoresource managementrsquo gestioacuten de recursos) enviado por el emisor intercalado con las celdas de datoslos bits en las celdas RM se rellenan por los switches (ldquoasistido por la redrdquo)
bit NI no hay mejora en la velocidad (congestioacuten suave)bit CI indica congestioacuten
las celdas RM se devuelven al emisor por el receptor sin modificar
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-92
Caso de estudio servicio ABR de las redes ATM
campo ER (lsquoexplicit ratersquo tasa expliacutecita) de 2 bytes en celda RM
un switch congestionado puede rebajar el valor ERla tasa del emisor es asiacute la maacutexima que puede aguantar la ruta
bit EFCI en celdas de datos se pone a 1 en switch congestionado
si la celda que precede a la RM tiene EFCI a 1 el emisor pone a1 el bit CI en la celda RM devueltaRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-93
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacuten transferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-94
control de congestioacuten en TCP incremento aditivo decremento multiplicativo
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
filosofiacutea incrementar la tasa de transmisioacuten (tamantildeo de la ventana) sondeando el ancho de banda accesible hasta que hay peacuterdidas
incremento aditivo incrementar cwnd en 1 MSS cada RTT hasta que haya peacuterdidasdecremento multiplicativo dividir cwnd por 2 cuando las haya
tiempo
cwnd
tam
antildeo
de la
ven
tana
co
n co
nges
tioacuten
diente de sierra sondeo del ancho
de banda
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-95
Control de congestioacuten TCP detalles
el emisor limita la transmisioacutenLastByteSent-LastByteAcked
le cwnd
lsquogrosso modorsquo
cwnd es dinaacutemica funcioacuten de la congestioacuten de la red percibida
iquestCoacutemo percibe el emisor la congestioacutenevento de peacuterdida = expiracioacuten o 3 ACKs duplicadosel emisor reduce la tasa (cwnd) tras un evento de peacuterdida
3 mecanismosAIMDarranque lentoconservador tras eventos de expiracioacuten
tasa = cwndRTT Bytess
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-96
TCP Arranque lento
cuando se inicia la conexioacuten la tasa se incrementa exponencialmente hasta la primera peacuterdida
inicialmente cwnd = 1 MSScwnd se dobla cada RTTse incrementa cwnd con cada ACK recibido
resumen la tasa inicial es baja pero crece exponencialmente raacutepido
Host A
un segmento
RTT
Host B
tiempo
2 segmentos
4 segmentos
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-97
Refinado deduccioacuten de peacuterdidastras 3 ACKs duplicados
cwnd se divide por 2la ventana ya crece linealmente
pero tras una expiracioacutencwnd en cambio se pone a 1 MSS la ventana entonces crece exponencialmentehasta un umbral luego linealmente
3 ACKs duplicados indica que la red es capaz de entregar algunos segmentos
expiracioacuten indica una situacioacuten de congestioacuten ldquomaacutes alarmanterdquo
Filosofiacutea
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-98
RefinadoP iquestcuaacutendo deberiacutea
pasarse de incremento exponencial a lineal
R cuando cwnd llegue a 12 de su valor antes de la expiracioacuten
Implementacioacutenvariable ssthreshcon una peacuterdida ssthreshse pone a 12 de cwndjusto antes de la peacuterdida
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-99
Resumen Control de congestioacuten TCP
expiracioacutenssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmitir segmento que falta
Λcwnd gt ssthresh
evitacioacuten decongestion
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmitir nuevo(s) segmento(s) seguacuten se pueda
ACK nuevo
dupACKcount++ACK duplicado
recuperacioacuten raacutepida
cwnd = cwnd + MSStransmitir nuevo(s) segmento(s) seguacuten se pueda
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmitir segmento que falta
dupACKcount == 3
expiracioacutenssthresh = cwnd2
cwnd = 1 dupACKcount = 0
retransmitir segmento que faltassthresh= cwnd2
cwnd = ssthresh + 3retransmitir segmento que falta
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
ACK nuevo
arranque lento
expiracioacutenssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmitir segmento que falta
cwnd = cwnd+MSSdupACKcount = 0transmitir nuevo(s) segmento(s) seguacuten se pueda
ACK nuevodupACKcount++ACK duplicado
Λcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NewACK
NewACK
NewACK
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-100
eficiencia de TCP
iquestcuaacutel es la tasa media de TCP en funcioacuten del tamantildeo de ventana y RTT
ignorar el arranque raacutepidosea W el tamantildeo de la ventana cuando ocurre una peacuterdida
cuando la ventana es W la tasa es WRTTjusto tras la peacuterdida la ventana pasa a W2 y la tasa a W2RTTla tasa media es 075 WRTT
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-101
Futuros de TCP TCP sobre ldquotubos largos y gruesosrdquo
ejemplo segmentos de 1500 bytes RTT 100ms se quiere tasa de 10 Gbps requiere tamantildeo de ventana W = 83333 segmentos en traacutensitotasa de transferencia en funcioacuten de la tasa de peacuterdidas
L = 210-10 iexcliexcluna tasa de peacuterdidas muy bajanuevas versiones de TCP para alta velocidad
LRTTMSSsdot221
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-102
objetivo de equidad si K sesiones TCP comparten el mismo enlace cuello de botella de ancho de banda R cada uno deberiacutea tener una tasa media de RK
conexioacuten TCP 1
router cuello de botella
capacidad Rconexioacuten TCP 2
Equidad en TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-103
iquestPor queacute es equitativoTCP2 sesiones que compiten
el incremento aditivo da una pendiente de 1 en los incrementosel decremento multiplicativo decrementa la tasa proporcionalmente
R
R
reparto equitativo del ancho de banda
tasa de transferencia
de la conexioacuten 1
tasa
de
tran
sfer
enc i
a
de la
con
exioacute
n 2
evitacioacuten de congestioacuten incremento aditivopeacuterdida decrementar ventana en un factor de 2evitacioacuten de congestioacuten incremento aditivo
peacuterdida decrementar ventana en un factor de 2
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-104
Equidad (maacutes)Equidad y UDP
las aplicaciones multimedia a menudo no usan TCP
no quieren que la tasa de transf se limite por el control de congestioacuten
por eso usan UDPenviacutean audiovideo a tasa constante toleran peacuterdida de paquetes
Equidad y conexiones TCP paralelasnada impide a una aplicacioacuten abrir conexiones paralelas entre 2 hostslos navegadores lo hacenejemplo enlace de tasa R permite 9 conexiones
una aplicacioacuten pide 1 TCP obtiene tasa R10una aplicacioacuten pide 11 TCPs iexcliexclobtiene tasa R2
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-105
Capiacutetulo 3 Resumenprincipios detraacutes de los servicios de la capa de transporte
multiplexacioacuten desmultiplexacioacutentransferencia de datos fiablecontrol de flujocontrol de congestioacuten
instanciacioacuten e implementacioacuten en Internet
UDPTCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-7
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacuten transferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-8
Multiplexacioacutendesmultiplexacioacuten
aplicacioacuten
transporte
red
enlace
fiacutesica
P1 aplicacioacuten
transporte
red
enlace
fiacutesica
aplicacioacuten
transporte
red
enlace
fiacutesica
P2P3 P4P1
host 1 host 2 host 3
= proceso= socket
entregar segmentos recibidosal socket correcto
Desmultiplexacioacuten en el destinoreunir datos de muacuteltiplessockets empaquetarlos con el encabezado (usado luego para desmultiplexar)
Multiplexacioacuten en el emisor
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
socket = puerta de comunicacioacuten red-proceso
Protocolo de red IP
El protocolo de Internet para la capa de red se llama IPSe encarga de dar una conexioacuten loacutegica entre hostsEntrega datagramas de un host a otro pero sin garantiacuteasCada host se identifica con una direccioacuten de red que llamamos direccioacuten IP
3-9Capa de TransporteRauacutel Duraacuten Nacho Peacuterez v14
3-10
Coacutemo funciona la desmultiplexacioacutenel host recibe datagramas IP
cada datagrama tiene IP de origen e IP de destinocada datagrama lleva un segmento de la capa de transportecada segmento tiene nordm de puerto de origen y de destino
el host usa IP y nordm de puerto para dirigir el segmento al socket apropiado
nordm puerto org nordm puerto dest
32 bits
datos de la aplicacioacuten (mensaje)
otros campos encabezado
formato de segmento TCPUDP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-11
desmultiplexacioacuten sin conexioacuten
recordatorio crear sockets con nuacutemeros de puerto locales
DatagramSocket mySocket1 = new DatagramSocket(12534)
DatagramSocket mySocket2 = new DatagramSocket(12535)
recordatorio al crear un datagrama para enviar por un socket UDP hay que especificar
(IP dest nordm puerto dest)
cuando un host recibe un segmento UDP
comprueba el nordm de puerto destino del segmentoredirige el segmento UDP al socket con ese nordm de puerto
datagramas IP con diferente IP origen yo nordm puerto origen se dirigen al mismo socket
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-12
desmultiplexacioacuten sin conexioacuten (cont)
DatagramSocket serverSocket = new DatagramSocket(6428)
IPcliente B
P2
IP cliente A
P1P1P3
IP servidor C
PO 6428PD 9157
PO 9157PD 6428
PO 6428PD 5775
PO 5775PD 6428
PO proporciona ldquodireccioacuten de retornordquo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-13
Desmultiplexacioacuten orientada a conexioacuten
un socket TCP se identifica por una 4-upla
IP origennordm puerto origenIP destinonordm puerto destino
el receptor usa los 4 valores para redirigir el segmento al socket adecuado
el host servidor debe soportar varios sockets TCP simultaacuteneos
cada socket identificado por su propia 4-upla
los servidores web tienen sockets diferentes para cada cliente que se conecta
HTTP no persistente tendraacute un socket para cada solicitud
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-14
Desmultiplexacioacuten orientada a conexioacuten (cont)
IPclienteB
P1
IPcliente A
P1P2P4
IPservidor C
P5 P6 P3
PO 9157PD 80IP-O AIP-DC
PO 9157PD 80
IP-DCIP-O B
PO 5775PD 80
IP-DCIP-O B
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-15
desmultiplexacioacuten orientada a conexioacuten Web Server con hebras
IP clienteB
P1
IPcliente A
P1P2
IPservidor C
SP 9157DP 80
SP 9157DP 80
P4 P3
D-IPCS-IP AD-IPC
S-IP B
SP 5775DP 80
D-IPCS-IP B
PO 9157PD 80IP-O AIP-DC
PO 5775PD 80
IP-DCIP-O B
PO 9157PD 80
IP-DCIP-O B
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
Sockets en clienteservidor UDP
socket()
sendto()
recvfrom()
close()sendto()
recvfrom()
bind()
socket()
Cliente UDP Servidor UDP
procesar pedidohellip
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte 3-16
Sockets en clienteservidor TCP
socket()
write()
read()
close()
accept()
listen()
bind()
socket()
Cliente TCP Servidor TCP
connect()
close()
write()
read()
read()
procesar pedidohellip
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte 3-17
3-18
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacutentransferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-19
UDP User Datagram Protocol [RFC 768]protocolo de transporte de Internet sin adornos ldquocon lo puestordquoal ser un servicio de ldquohaz lo que puedasrdquo los segmentos UDP pueden
perderseser entregados fuera de orden a la aplicacioacuten
sin conexioacutensin establecimiento de conexioacuten entre el emisor y el receptor UDPcada segmento UDP se trata de forma independiente de los otros
iquestPor queacute existe UDPno hay establecimiento de la conexioacuten (que puede antildeadir retardo)sencillo no hay estado ni en el emisor ni en el receptorencabezado pequentildeono hay control de congestioacuten UDP puede disparar todo lo raacutepido que se quiera
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-20
UDP maacutesa menudo usado para aplicaciones de lsquostreamingrsquomultimedia
tolerante a peacuterdidassensible a la velocidad
otros usos de UDPDNSSNMP
transferencia fiable sobre UDP antildeadir fiabilidad en la capa de aplicacioacuten
recuperacioacuten de errores especiacutefica para la aplicacioacuten
nordm puerto org nordm puerto dest
32 bits
datos de la aplicacioacuten(mensaje)
formato de segmento UDP
long checksumLongitud en
bytes del segmento
UDP incluido encabezado
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
0 311615
3-21
UDP checksum
Emisortrata contenidos del segmento como secuencia de enteros de 16 bitschecksum suma (en compl a 1) del contenido del segmentoel emisor pone el checksum en el campo UDP correspondiente
Receptorcalcula el checksum del segmento recibidocomprueba si el valor calculado = campo checksum
NO - error detectadoSIacute ndash error no detectado
iquestPuede haber errores aun asiacute Lo veremos maacutes adelante
Objetivo detectar ldquoerroresrdquo (pej bits alterados) en el segmento transmitido
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-22
Ejemplo de Checksum InternetNota iexclsuma en complemento a 1Ejemplo sumar dos enteros de 16 bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
acarreo
sumachecksum
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-23
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacutentransferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-24
Principios de transferencia de datos fiable
es importante en las capas de aplicacioacuten transporte y enlaceiexclen el ldquotop-10rdquo de las cuestiones importantes en redes
las caracteriacutesticas del canal no fiable determinaraacuten la complejidad del protocolo de transferencia de datos fiable (rdt lsquoreliable data transfer protocolrsquo)
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-25
Principios de transferencia de datos fiable
es importante en las capas de aplicacioacuten transporte y enlaceiexclen el ldquotop-10rdquo de las cuestiones importantes en redes
las caracteriacutesticas del canal no fiable determinaraacuten la complejidad del protocolo de transferencia de datos fiable (rdt lsquoreliable data transfer protocolrsquo)
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-26
Principios de transferencia de datos fiable
es importante en las capas de aplicacioacuten transporte y enlaceiexclen el ldquotop-10rdquo de las cuestiones importantes en redes
las caracteriacutesticas del canal no fiable determinaraacuten la complejidad del protocolo de transferencia de datos fiable (rdt lsquoreliable data transfer protocolrsquo)
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
rdt_send() llamada desde arriba (pej por la apl) Se le
pasan los datos a entregar al nivel superior del receptor
3-27
transferencia de datos fiable preliminares
ladoemisioacuten
ladorecepcioacuten
udt_send() llamado por rdt para transferir paquete por canal no fiable al receptor
rdt_rcv() llamado cuando el paquete llegue al extremo de
recepcioacuten del canal
deliver_data() llamada por rdt para entregar datos
al nivel superior
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-28
transferencia de datos fiable preliminaresVamos a
desarrollar el emisor y el receptor de un protocolo de transf de datos fiable (rdt) paso a pasoconsiderar soacutelo transferencia de datos unidireccional
iexclpero el control se transmitiraacute en ambas direccionesusar maacutequinas de estados finitos (MEFs) para definir emisor y receptor
estado1
estado2
evento que causa la transicioacutenaccioacuten tomada en la transicioacuten
estado desde este estado el siguiente
se determina uacutenicamente por el
siguiente evento
eventoacciones
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-29
Rdt10 transferencia fiable en canal fiable
canal subyacente perfectamente fiableno hay errores de bitno hay peacuterdida de paquetes
MEF diferente para emisor y receptorel emisor enviacutea dato al canal subyacenteel emisor lee datos del canal subyacente
esperarllamada de arriba packet = make_pkt(data)
udt_send(packet)
rdt_send(data)extract (packetdata)deliver_data(data)
esperar llamada de abajo
rdt_rcv(packet)
emisor receptor
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-30
Rdt20 canal con errores de bitel canal subyacente puede alterar bits del paquete
usar el checksum para detectar errores de bitla cuestioacuten iquestcoacutemo recuperarse de erroresreconocimientos(lsquoacknowledgementsrsquo ACKs) el receptor indica expliacutecitamente que la recepcioacuten fue buenareconocimientos negativos (NAKs) el receptor indica expliacutecitamente que el paquete teniacutea erroresel emisor retransmite el paquete si recibe un NAK
nuevos mecanismos en rdt20 (sobre rdt10)deteccioacuten de erroresrealimentacioacuten del receptormensajes de control (ACKNAK) del receptor al emisor
iquestCoacutemo se recuperan los humanos de ldquoerroresrdquodurante la conversacioacuten
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-31
Rdt20 canal con errores de bitel canal subyacente puede alterar bits del paquete
usar el checksum para detectar errores de bitla cuestioacuten iquestcoacutemo recuperarse de erroresreconocimientos(lsquoacknowledgementsrsquo ACKs) el receptor indica expliacutecitamente que la recepcioacuten fue buenareconocimientos negativos (NAKs) el receptor indica expliacutecitamente que el paquete teniacutea erroresel emisor retransmite el paquete si recibe un NAK
nuevos mecanismos en rdt20 (sobre rdt10)deteccioacuten de erroresrealimentacioacuten del receptormensajes de control (ACKNAK) del receptor al emisor
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-32
rdt20 especificacioacuten de la MEF
esperar llamada de
arriba
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
esperar ACK o NAK
esperar llamada de
abajoemisor
receptorrdt_send(data)
Λ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-33
rdt20 funcionamiento sin errores
esperar llamada de
arriba
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
esperar ACK o NAK
esperar llamada de
abajo
rdt_send(data)
Λ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-34
rdt20 caso de error
esperar llamada de
arriba
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
esperar ACK o NAK
esperar llamada de
abajo
rdt_send(data)
Λ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-35
iexcl rdt20 tiene un defecto fatal
iquestQueacute ocurre si ACK o NAK se corrompeniexcliexclel emisor no sabe queacuteocurrioacute en el receptorno es posible simplemente retransmitir se pueden crear duplicados
Manejo de duplicados el emisor retransmite el paquete actual si ACK o NAK no llegan bienel emisor antildeade un nuacutemero de secuencia a cada paqueteel receptor descarta (no entrega hacia arriba) el paquete duplicado
el emisor enviacutea un paquetey espera la respuesta delreceptor
parada y espera
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-36
rdt21 el emisor maneja ACKNAKs erroacuteneos
esperar llamada 0 de arriba
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
esperar ACK o NAK 0 udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isNAK(rcvpkt) )
sndpkt = make_pkt(1 data checksum)udt_send(sndpkt)
rdt_send(data)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isNAK(rcvpkt) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt)
esperar llamada 1 de arriba
esperar ACK o NAK 1
ΛΛ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-37
rdt21 el receptor maneja ACKNAKs erroacuteneos
esperar 0 de abajo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
esperar 1 de abajo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-38
rdt21 discusioacuten
Emisornordm secuencia antildeadido al paquete2 nuacutemeros valen (01) iquestPor queacutecomprobar si el ACKNAK recibido corruptoel doble de estados
el estado debe ldquorecordarrdquo si el paquete ldquoactualrdquo tiene nordm sec 0 oacute1
Receptordebe comprobar si el paquete recibido es duplicado
el estado indica si se espera el paquete 0 oacute 1
nota el receptor no puede saber si su uacuteltimo ACKNAK se recibioacute bien en el emisor
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-39
rdt22 un protocolo sin NAK
la misma funcionalidad que rdt21 usando soacutelo ACKsen lugar de NAK el receptor enviacutea ACK para el uacuteltimo paquete recibido bien
el receptor debe incluir expliacutecitamente el nordm de secuencia del paquete al que se refiere el ACK
un ACK duplicado en el emisor resulta en la misma accioacuten que un NAK retransmitir paquete actual
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-40
rdt22 fragmentos del emisor y el receptor
esperar llamada 0 de arriba
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
esperar ACK 0
fragmento MEF emisor
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
esperar 0 de abajo
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)fragmento MEF
receptor
Λ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-41
rdt30 canales con errores y peacuterdidas
Nueva suposicioacuten canal subyacente tambieacuten puede perder paquetes (datos o ACKs)
las retransmisiones de checksum nordm secuencia ACKs ayudan pero no son suficiente
liacutenea de trabajo emisor espera un tiempo ldquorazonablerdquo al ACKretransmite si no recibe ACK en ese tiemposi el paquete (o ACK) soacutelo se retrasoacute (no se perdioacute)
las retransmisiones estaraacuten repetidas pero con el nordm secuencia esto estaacute resueltoel receptor debe indicar nordm secuencia del paquete al que se aplica el ACK
requiere un temporizadorRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-42
rdt30 emisorsndpkt = make_pkt(0 data checksum)udt_send(sndpkt)start_timer
rdt_send(data)
espe-rar
ACK 0
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt1) )
esperar llamada 1 de arriba
sndpkt = make_pkt(1 data checksum)udt_send(sndpkt)start_timer
rdt_send(data)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt0) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)
stop_timerstop_timer
udt_send(sndpkt)start_timer
timeout
udt_send(sndpkt)start_timer
timeout
rdt_rcv(rcvpkt)
esperar llamada 0 de arriba
esper-rar
ACK 1
Λrdt_rcv(rcvpkt)
ΛΛ
Λ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-43
rdt30 funcionando
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-44
rdt30 funcionando
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-45
Rendimiento del rdt30
rdt30 funciona pero el rendimiento es muy malopej enlace de 1Gbs 15ms retardo prop paquete 8k bits
si RTT=30 ms 1 paquete de 1KB cada 30 sg -gt 33KBs de 1Gbpsiexcliexclel protocolo de red limita el uso de los recursos fiacutesicos
dosmicrosegun 8bps10bits 8000
9 ===RLdtrans
U emisor utilizacioacuten ndash fraccioacuten de tiempo que el emisor estaacuteocupado emitiendo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-46
rdt30 funcionamiento de parada y espera
primer bit transmitido t = 0
emisor receptor
RTT
uacuteltimo bit transmitido t = L R
llega primer bitllega uacuteltimo bit enviar ACK
llega ACK enviar siguiente paquete t = RTT + L R
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-47
Protocolos segmentados (en cadena)segmentar el emisor permite que haya muacuteltiples
paquetes ldquoen caminordquo pendientes de ACKel rango de nordm de secuencia debe aumentarsehay que antildeadir buacutefferes en el emisor yo el receptor
hay dos formas geneacutericas de protocolos segmentados retroceder N (lsquogo-Back-Nrsquo) y repeticioacuten selectiva (lsquoselective repeatrsquo)
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-48
segmentacioacuten uso mejorado
primer bit transmitido t = 0
emisor receptor
RTT
uacuteltimo bit transmitido t = L R
llega el primer bitllega uacuteltimo bit 1er paquete enviar ACK
llega ACK enviar siguiente paquete t = RTT + L R
llega uacuteltimo bit 2ordm paquete enviar ACKllega uacuteltimo bit 3er paquete enviar ACK
iexcliexclMejora en la utilizacioacuten en un factor de 3
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-49
Protocolos segmentados
Retroceder N vista globalel emisor puede tener hasta N paquetes pendientes de ACKel receptor soacutelo enviacutea ACKs acumulativos
no lo enviacutea para un paquete si hay una laguna
el emisor tiene un temporizador para el paquete maacutes antiguo sin ACK
si llega a 0 retransmitir paquetes sin ACK
Repeticioacuten selectiva vista globalel emisor puede tener hasta N paquetes pendientes de ACKel receptor enviacutea ACK para cada paqueteel emisor mantiene un temporizador para cada paquete sin ACK
si llega a 0 retransmitir soacutelo paquete sin ACK
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-50
Retroceder N (GBN)Emisor
nordm de secuencia de k bits en cabecera del paqueteventana de hasta N paquetes consecutivos sin ACK
ACK(n) ACK para todos los paquetes hasta nordm sec n (inclusive) ldquoACK acumulativordquo
puede recibir ACKs duplicados (ver receptor)temporizador para cada paquete en camino timeout(n) retransmitir paquete n y todos los de mayor nordm sec en la ventanaRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-51
GBN MEF ampliada para el emisor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-52
GBN MEF ampliada del receptor
Enviar ACK para paquete correcto con mayor nordm de secuencia en orden
se pueden generar ACKs duplicadossoacutelo hay que recordar expectedseqnum
paquete fuera de ordendescartar (no se guarda) -gt iexcliexclno hay buffer en el receptorReenviar ACK para paquete con mayor nordm secuencia en orden
Wait
udt_send(sndpkt)default
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(expectedseqnumACKchksum)
Λ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-53
GBN enfunciona-miento
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-54
Repeticioacuten selectiva (SR)
el receptor enviacutea ACK individual para cada paquete correcto
se deben guardar los paquetes en buffers seguacuten sea necesario para entregarlos en orden a la capa superior
el emisor soacutelo reenviacutea paquetes para los que no reciba ACK
un temporizador para cada paquete en caminoventana de emisor
hay N nordm de secuencia consecutivosde nuevo limita nordmsec de los paquetes en camino
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-55
Repeticioacuten selectiva ventanas de emisor y receptor
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-56
Repeticioacuten selectiva
datos de arribasi sig nordm sec en la ventana vaciacuteo enviar paquete
timeout(n)reenviar paquete n reiniciar temporizador
ACK(n) en [sendbasesendbase+N]
marcar paquete n como recibidosi n era el paquete sin ACK con menor nordm sec avanzar el inicio de la ventana al siguiente nordm sec sin ACK
emisorpaquete n en [rcvbase rcvbase+N-1]
enviar ACK(n)fuera de orden guardar en bufferen orden entregar (junto con los previamente guardados por fuera de orden) avanzar ventana al siguiente pendiente de recibir
paquete n en [rcvbase-Nrcvbase-1]
ACK(n)otro caso
ignorar
receptor
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-57
repeticioacuten selectiva en funcionamiento
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-58
Repeticioacuten selectivadilema
Ejemplo nos sec 0 1 2 3tamantildeo ventana=3
iexclel receptor no ve diferencia entre ambos casosen (a) pasa datos repetidos por nuevos de forma incorrecta
P iquestrelacioacuten entre nordm de nos de secuencia vaacutelidos y tamantildeo de la ventanaRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-59
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacuten transferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-60
TCP Visioacuten global RFCs 793 1122 1323 2018 2581
datos full duplexflujo de datos bidireccional en la misma conexioacutenMSS Maacuteximo tamantildeo de segmento (lsquomaximum segment sizersquo)
orientado a conexioacutenestablecimiento conexioacuten (intercambio de mensajes) inicializa estados antes del intercambio de datos
con control de flujoel emisor no satura al receptor
punto a puntoun emisor un receptor
flujo de bytes fiable en orden
no hay ldquoliacutemites de mensajerdquosegmentado
el control de flujo y congestioacuten de TCP fijan el tamantildeo de la ventanabuffers de emisioacuten y recepcioacuten
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-61
estructura del segmento TCP
nordm puerto origen nordm puerto dest
32 bits
datosaplicacioacuten
(long variable)
nordm secuencianordm ACK
ventana recepcioacutenpuntero datos urgchecksum
FSRPAUlong encab
notused
Opciones (long variable)
URG datos urgentes(la aplicacioacuten debe
hacer algo)ACK nordm ACK
vaacutelidoPSH push enviar
estos datos ya a laaplicacioacuten
(el programador no puede manejarlo)
RST SYN FINestab conexioacuten
(comandos estab cerrar)
nordm bytes que el receptorestaacute dispuestoa aceptar
contados en bytes de datos(iexcliexclno segmentos)
checksum Internet
(como en UDP)
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
0 15 16 31
3-62
TCP nuacutems secuencia y ACKsnos secuencia
ldquonordmrdquo flujo de bytes del 1er byte de datos del segmento
ACKsnordm sec del siguiente byte esperado de la otra parteACK acumulativo
P coacutemo se tratan los segmentos fuera de orden
R la especificacioacuten de TCP no lo dice lo que haga el implementador
Host A Host B
Seq=42 ACK=79 data = lsquoCrsquo
Seq=79 ACK=43 data = lsquoCrsquo
Seq=43 ACK=80
Usuarioescribe
lsquoCrsquo
el host enviacuteaACK por ladevolucioacuten
de lsquoCrsquo
el host enviacutea ACK por lsquoCrsquodevuelve lsquoCrsquo
tiempoejemplo sencillo de telnet
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-63
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacutentransferencia de datos fiable control de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-64
TCP gestioacuten de la conexioacutenRecordatorio en TCP emisor y
receptor establecen una ldquoconexioacutenrdquo antes de intercambiar segmentos de datosinicializar variables TCP
nos de secuenciabuffers info de control de flujo (pej RcvWindow)
el cliente inicia la conexioacutenSocket clientSocket = new Socket(rdquonombrehostrdquonumero puerto)
el servidor el cliente contacta con eacutelSocket connectionSocket = welcomeSocketaccept()
Establecimiento en 3 pasos
Paso 1 el cliente envia segmento SYN al servidor
especifica nordm secuencia inicialsin datos
Paso 2 el servidor recibe SYN responde con segmento SYNACK
el servidor crea buffersespecifica el nordm sec inicial del servidor
Paso 3 el cliente recibe SYNACK responde con segmento ACK que puede contener datos
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-65
TCP gestioacuten de la conexioacuten (cont)
Cerrar una conexioacuten
el cliente cierra el socketclientSocketclose()
Paso 1 el sistema terminal del cliente enviacutea el segmento de control TCP FIN al servidor
Paso 2 el servidor recibe FIN responde con ACK Cierra la conexioacuten enviacutea FIN
cliente
FIN
servidor
ACK
ACK
FIN
cerrar
cerrar
cerrado
espe
ra
tem
pori
zada
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-66
TCP gestioacuten de la conexioacuten (cont)
Paso 3 el cliente recibe FIN responde con ACK
entra en ldquoespera temporizadardquo ndashresponderaacute con ACK a los FINs que reciba
Paso 4 el servidor recibe ACK Conexioacuten cerrada
Nota con una pequentildea modificacioacuten puede manejar FINs simultaacuteneos
cliente
FIN
servidor
ACK
ACK
FIN
cerrando
cerrando
cerrada
espe
ra
tem
pori
zada
cerrada
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-67
TCP gestioacuten de la conexioacuten (cont)
ciclo de vidade cliente TCP
ciclo de vidade servidor TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-68
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacutentransferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-69
TCP transferencia de datos fiable
TCP crea servicio rdtsobre el servicio no fiable de IPsegmentos en cadenaacks acumulativosTCP usa un uacutenico temporizador de retransmisioacuten
retransmisiones disparadas por
eventos de temporizador a ceroACKs duplicados
inicialmente considerar emisor TCP simplificado
ignorar ACKs duplicadosignorar control de flujo congestioacuten de flujo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-70
eventos de emisioacuten TCPdatos recibidos de la
aplicacioacutencrear segmento con nordmsecnordm sec es el nordm del 1er byte del segmento dentro del flujo de bytesiniciar temporizador si no lo estaacuteintervalo de expiracioacuten TimeOutInterval
lsquotimeoutrsquo (expiracioacuten)retransmitir segmento que la provocoacutereiniciar temporizador
ACK recibidosi se refiere a segmentos sin ACK previo
actualizar aquellos a los que les falta el ACKiniciar temporizador si hay segmentos pendientes
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-71
emisor TCP (simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (siempre) switch(suceso)
suceso datos recibidos de la aplicacioacuten de capa superiorcrear segmento TCP con nordm sec NextSeqNum if (temporizador no en marcha)
iniciar temporizadorpasar segmento a IP NextSeqNum = NextSeqNum + length(data)
suceso temporizador expiroacuteretransmitir segmento sin ACK con el menor nordm sec iniciar contador
suceso recibido ACK con valor del campo ACK == yif (y gt SendBase)
SendBase = yif (hay segmentos sin ACK)
iniciar temporizador
fin de loop siempre
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-72
TCP situaciones para retransmisioacutenHost A
Seq=100 20 bytes data
ACK=100
tiempotimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq=
92 t
imeo
ut
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
peacuterdida
tim
eout
situacioacuten de ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tiempo
Seq=
92 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
SendBase= 100
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-73
TCP situaciones para retransmisioacuten (maacutes)Host A
Seq=92 8 bytes data
ACK=100
peacuterdida
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
tiempo
SendBase= 120
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-74
generacioacuten de ACK en TCP [RFC 1122 RFC 2581]
Evento en Receptor
Llegada de segmento en orden connordm sec esperado Todos hasta elnordm sec esperado ya tienen ACK
Llegada de segmento en orden connordm sec esperado Hay otro seg en orden esperando transm de ACK
Llegada de nordm de sec fuera de orden mayor que el esperado Detectada laguna
Llegada de segmento que comple-ta parcialmente una laguna
Receptor TCP accioacuten
ACK retardado Esperar hasta 500msal siguiente segmento Si no llega enviarACK
Inmediatamente enviar ACK acumulativopara ambos segmentos
Inmediatamente enviar ACK duplicadoindicando nordm sec del siguiente byte esperado
Inmediatamente enviar ACK suponiendo que el segmento empieza en el liacutemite inferior de la laguna
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-75
Retransmisioacuten raacutepida
periacuteodo de expiracioacuten a menudo relativamente largo
largo retardo antes de reenviar el paquete perdido
se detectan segmentos perdidos por ACKs repetidos
el emisor a menudo enviacutea varios segmentos seguidossi se pierde un segmento seguramente habraacute varios ACKs repetidos
si el emisor recibe 3 ACKs por los mismos datos supone que el segmento de despueacutes de los datos con ACK se perdioacute
retransmisioacuten raacutepida reenviar segmento antes de que expire el temporizador
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-76
Host A
tim
eout
Host B
tiempo
X
reenviar 2ordm segmento
Figura 337 Reenviar segmento tras triple ACKRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-77
suceso recibido ACK con campo ACK con valor == s if (s gt SendBase)
SendBase = sif (hay segmentos pendientes de ACK)
iniciar temporizador
else incrementar cuenta de ACKs duplicados recibidos para s if (cuenta de ACKs duplicados para s == 3)
reenviar segmento con nordm sec s
Algoritmo de retransmisioacuten raacutepida
un ACK duplicado paraun segmento ya con ACK
retransmisioacuten raacutepida
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
Algoritmo de Nagle [RFC896]
Las conexiones interactivas (ssh telnet) suelen enviar segmentos con muy pocos datos (uno dos bytes)
iexclPeacuterdida de eficienciaEs maacutes interesante reunir varios datos procedentes de la aplicacioacuten y mandarlos todos juntosEl algoritmo de Nagle indica que no se enviacuteen nuevos segmentos mientras queden reconocimientos pendientes
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte 3-78
Algoritmo de Nagle [RFC896]
Evento en emisor
Llegada de datos de la aplicacioacutenHay ACKs pendientes
Llegada de un ACK pendiente
Llegada de datos de la aplicacioacutenNo hay ACKs pendientes
Llegada de datos de la aplicacioacutenNo queda sitio en el buffer delemisor
Accioacuten en emisor
Acumular datos en el buffer del emisor
Inmediatamente enviar todos los segmen-tos acumulados en buffer
Inmediatamente enviar datos al receptor
Inmediatamente enviar datos si lo permi-te la ventana aunque no se hayan reci-bido ACKs previos
Capa de Transporte 3-79Rauacutel Duraacuten Nacho Peacuterez v14
3-80
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacutentransferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-81
en TCP el receptor tiene un buffer de recepcioacuten
servicio de equilibrado de velocidad equilibrar la velocidad de enviacuteo a la de la aplicacioacuten vaciando el buffer de recepcioacutenla aplicacioacuten puede ser
lenta leyendo del buffer
el emisor no saturaraacuteel buffer del receptor
a base de enviar mucho muy seguido
control de flujoTCP Control de flujo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-82
TCP control de flujo coacutemo funciona
(suponer que el receptor TCP descarta segmentos fuera de orden)hay sitio en el buffer
RcvWindow = RcvBuffer -[LastByteRcvd - LastByteRead]
el receptor anuncia el espacio libre incluyendo el valor RcvWindow en los segmentosel emisor limita los datos sin ACK a RcvWindow
garantiza que el buffer de recepcioacuten no se desborda
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-83
TCP lsquoRound Trip Timersquo y lsquoTimeoutrsquo
P iquestcoacutemo fijar el tiempo de lsquotimeoutrsquo de TCPmaacutes que RTT
pero RTT variacuteasi demasiado corto lsquotimeoutrsquo prematuro
retransmisiones innecesarias
si demasiado largo reaccioacuten lenta a peacuterdidas
P iquestcoacutemo estimar RTTSampleRTT tiempo medido desde transmisioacuten de un segmento hasta recepcioacuten de ACK
ignorar retransmisionesSampleRTT variaraacute queremos un valor maacutes ldquoestablerdquo
promedio de varias mediciones recientes no el valor actual
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-84
TCP lsquoRound Trip Timersquo y lsquoTimeoutrsquo
EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT
media moacutevil ponderada exponencialla influencia de una muestra pasada decrece exponencialmentevalor tiacutepico α = 0125
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-85
Ejemplo de estimacioacuten de RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106time (seconnds)
RTT
(mill
iseco
nds)
SampleRTT Estimated RTT
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-86
TCP lsquoRound Trip Timersquo y lsquoTimeoutrsquoFijar el tiempo de expiracioacuten (lsquotimeoutrsquo)
EstimatedRTT maacutes ldquomargen de seguridadrdquogran variacioacuten en EstimatedRTT -gt mayor margen de seguridad
primero estimar cuaacutento SampleRTT se desviacutea de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-β)DevRTT +β|SampleRTT-EstimatedRTT|
(tiacutepicamente β = 025)
Entonces fijar el tiempo de expiracioacuten
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
Algoritmo de Karn
Si recibimos el reconocimiento de un paquete retransmitido no tenemos forma de saber a cuaacutel de las retransmisiones corresponde ese reconocimientoPor ello se ignoran los paquetes retransmitidos a la hora de computar el RTTEste procedimiento se denomina algoritmo de Karn
3-87Capa de TransporteRauacutel Duraacuten Nacho Peacuterez v14
3-88
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacuten transferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-89
Principios de control de la congestioacuten
Congestioacuteninformal ldquodemasiadas fuentes enviando demasiados datos demasiado deprisa para que la red lo pueda asimilarrdquoiexcliexcldiferente a control de flujosiacutentomas
paquetes perdidos (desbordamiento de bufferes en los routers)grandes retardos (encolado en los bufferes de los routers)iexcliexclun problema ldquotop-10rdquo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-90
Formas de abordar el control de congestioacuten
control de terminal a terminalno hay realimentacioacuten expliacutecita de la redla congestioacuten se deduce por el retardo y las peacuterdidas observadas por los terminaleseste es el meacutetodo de TCP
control asistido por la redlos routers proporcionan realimentacioacuten a los terminales
un bit que indica la congestioacuten (SNA DECnet TCPIP ECN ATM)indicacioacuten expliacutecita de la tasa a la que el emisor deberiacutea enviar
Dos formas principales de abordarla
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-91
Caso de estudio servicio ABR de las redes ATM
ABR lsquoAvailable Bit Ratersquo(Tasa de bits disponible)
ldquoservicio elaacutesticordquosi la ruta del emisor ldquoinfra-cargadardquo
el emisor deberiacutea usar el ancho de banda disponible
si la ruta del emisor estaacutecongestionada
el emisor se limita a la tasa garantizada
ceacutelulas RM (lsquoresource managementrsquo gestioacuten de recursos) enviado por el emisor intercalado con las celdas de datoslos bits en las celdas RM se rellenan por los switches (ldquoasistido por la redrdquo)
bit NI no hay mejora en la velocidad (congestioacuten suave)bit CI indica congestioacuten
las celdas RM se devuelven al emisor por el receptor sin modificar
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-92
Caso de estudio servicio ABR de las redes ATM
campo ER (lsquoexplicit ratersquo tasa expliacutecita) de 2 bytes en celda RM
un switch congestionado puede rebajar el valor ERla tasa del emisor es asiacute la maacutexima que puede aguantar la ruta
bit EFCI en celdas de datos se pone a 1 en switch congestionado
si la celda que precede a la RM tiene EFCI a 1 el emisor pone a1 el bit CI en la celda RM devueltaRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-93
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacuten transferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-94
control de congestioacuten en TCP incremento aditivo decremento multiplicativo
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
filosofiacutea incrementar la tasa de transmisioacuten (tamantildeo de la ventana) sondeando el ancho de banda accesible hasta que hay peacuterdidas
incremento aditivo incrementar cwnd en 1 MSS cada RTT hasta que haya peacuterdidasdecremento multiplicativo dividir cwnd por 2 cuando las haya
tiempo
cwnd
tam
antildeo
de la
ven
tana
co
n co
nges
tioacuten
diente de sierra sondeo del ancho
de banda
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-95
Control de congestioacuten TCP detalles
el emisor limita la transmisioacutenLastByteSent-LastByteAcked
le cwnd
lsquogrosso modorsquo
cwnd es dinaacutemica funcioacuten de la congestioacuten de la red percibida
iquestCoacutemo percibe el emisor la congestioacutenevento de peacuterdida = expiracioacuten o 3 ACKs duplicadosel emisor reduce la tasa (cwnd) tras un evento de peacuterdida
3 mecanismosAIMDarranque lentoconservador tras eventos de expiracioacuten
tasa = cwndRTT Bytess
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-96
TCP Arranque lento
cuando se inicia la conexioacuten la tasa se incrementa exponencialmente hasta la primera peacuterdida
inicialmente cwnd = 1 MSScwnd se dobla cada RTTse incrementa cwnd con cada ACK recibido
resumen la tasa inicial es baja pero crece exponencialmente raacutepido
Host A
un segmento
RTT
Host B
tiempo
2 segmentos
4 segmentos
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-97
Refinado deduccioacuten de peacuterdidastras 3 ACKs duplicados
cwnd se divide por 2la ventana ya crece linealmente
pero tras una expiracioacutencwnd en cambio se pone a 1 MSS la ventana entonces crece exponencialmentehasta un umbral luego linealmente
3 ACKs duplicados indica que la red es capaz de entregar algunos segmentos
expiracioacuten indica una situacioacuten de congestioacuten ldquomaacutes alarmanterdquo
Filosofiacutea
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-98
RefinadoP iquestcuaacutendo deberiacutea
pasarse de incremento exponencial a lineal
R cuando cwnd llegue a 12 de su valor antes de la expiracioacuten
Implementacioacutenvariable ssthreshcon una peacuterdida ssthreshse pone a 12 de cwndjusto antes de la peacuterdida
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-99
Resumen Control de congestioacuten TCP
expiracioacutenssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmitir segmento que falta
Λcwnd gt ssthresh
evitacioacuten decongestion
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmitir nuevo(s) segmento(s) seguacuten se pueda
ACK nuevo
dupACKcount++ACK duplicado
recuperacioacuten raacutepida
cwnd = cwnd + MSStransmitir nuevo(s) segmento(s) seguacuten se pueda
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmitir segmento que falta
dupACKcount == 3
expiracioacutenssthresh = cwnd2
cwnd = 1 dupACKcount = 0
retransmitir segmento que faltassthresh= cwnd2
cwnd = ssthresh + 3retransmitir segmento que falta
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
ACK nuevo
arranque lento
expiracioacutenssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmitir segmento que falta
cwnd = cwnd+MSSdupACKcount = 0transmitir nuevo(s) segmento(s) seguacuten se pueda
ACK nuevodupACKcount++ACK duplicado
Λcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NewACK
NewACK
NewACK
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-100
eficiencia de TCP
iquestcuaacutel es la tasa media de TCP en funcioacuten del tamantildeo de ventana y RTT
ignorar el arranque raacutepidosea W el tamantildeo de la ventana cuando ocurre una peacuterdida
cuando la ventana es W la tasa es WRTTjusto tras la peacuterdida la ventana pasa a W2 y la tasa a W2RTTla tasa media es 075 WRTT
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-101
Futuros de TCP TCP sobre ldquotubos largos y gruesosrdquo
ejemplo segmentos de 1500 bytes RTT 100ms se quiere tasa de 10 Gbps requiere tamantildeo de ventana W = 83333 segmentos en traacutensitotasa de transferencia en funcioacuten de la tasa de peacuterdidas
L = 210-10 iexcliexcluna tasa de peacuterdidas muy bajanuevas versiones de TCP para alta velocidad
LRTTMSSsdot221
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-102
objetivo de equidad si K sesiones TCP comparten el mismo enlace cuello de botella de ancho de banda R cada uno deberiacutea tener una tasa media de RK
conexioacuten TCP 1
router cuello de botella
capacidad Rconexioacuten TCP 2
Equidad en TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-103
iquestPor queacute es equitativoTCP2 sesiones que compiten
el incremento aditivo da una pendiente de 1 en los incrementosel decremento multiplicativo decrementa la tasa proporcionalmente
R
R
reparto equitativo del ancho de banda
tasa de transferencia
de la conexioacuten 1
tasa
de
tran
sfer
enc i
a
de la
con
exioacute
n 2
evitacioacuten de congestioacuten incremento aditivopeacuterdida decrementar ventana en un factor de 2evitacioacuten de congestioacuten incremento aditivo
peacuterdida decrementar ventana en un factor de 2
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-104
Equidad (maacutes)Equidad y UDP
las aplicaciones multimedia a menudo no usan TCP
no quieren que la tasa de transf se limite por el control de congestioacuten
por eso usan UDPenviacutean audiovideo a tasa constante toleran peacuterdida de paquetes
Equidad y conexiones TCP paralelasnada impide a una aplicacioacuten abrir conexiones paralelas entre 2 hostslos navegadores lo hacenejemplo enlace de tasa R permite 9 conexiones
una aplicacioacuten pide 1 TCP obtiene tasa R10una aplicacioacuten pide 11 TCPs iexcliexclobtiene tasa R2
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-105
Capiacutetulo 3 Resumenprincipios detraacutes de los servicios de la capa de transporte
multiplexacioacuten desmultiplexacioacutentransferencia de datos fiablecontrol de flujocontrol de congestioacuten
instanciacioacuten e implementacioacuten en Internet
UDPTCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-13
Desmultiplexacioacuten orientada a conexioacuten
un socket TCP se identifica por una 4-upla
IP origennordm puerto origenIP destinonordm puerto destino
el receptor usa los 4 valores para redirigir el segmento al socket adecuado
el host servidor debe soportar varios sockets TCP simultaacuteneos
cada socket identificado por su propia 4-upla
los servidores web tienen sockets diferentes para cada cliente que se conecta
HTTP no persistente tendraacute un socket para cada solicitud
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-14
Desmultiplexacioacuten orientada a conexioacuten (cont)
IPclienteB
P1
IPcliente A
P1P2P4
IPservidor C
P5 P6 P3
PO 9157PD 80IP-O AIP-DC
PO 9157PD 80
IP-DCIP-O B
PO 5775PD 80
IP-DCIP-O B
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-15
desmultiplexacioacuten orientada a conexioacuten Web Server con hebras
IP clienteB
P1
IPcliente A
P1P2
IPservidor C
SP 9157DP 80
SP 9157DP 80
P4 P3
D-IPCS-IP AD-IPC
S-IP B
SP 5775DP 80
D-IPCS-IP B
PO 9157PD 80IP-O AIP-DC
PO 5775PD 80
IP-DCIP-O B
PO 9157PD 80
IP-DCIP-O B
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
Sockets en clienteservidor UDP
socket()
sendto()
recvfrom()
close()sendto()
recvfrom()
bind()
socket()
Cliente UDP Servidor UDP
procesar pedidohellip
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte 3-16
Sockets en clienteservidor TCP
socket()
write()
read()
close()
accept()
listen()
bind()
socket()
Cliente TCP Servidor TCP
connect()
close()
write()
read()
read()
procesar pedidohellip
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte 3-17
3-18
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacutentransferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-19
UDP User Datagram Protocol [RFC 768]protocolo de transporte de Internet sin adornos ldquocon lo puestordquoal ser un servicio de ldquohaz lo que puedasrdquo los segmentos UDP pueden
perderseser entregados fuera de orden a la aplicacioacuten
sin conexioacutensin establecimiento de conexioacuten entre el emisor y el receptor UDPcada segmento UDP se trata de forma independiente de los otros
iquestPor queacute existe UDPno hay establecimiento de la conexioacuten (que puede antildeadir retardo)sencillo no hay estado ni en el emisor ni en el receptorencabezado pequentildeono hay control de congestioacuten UDP puede disparar todo lo raacutepido que se quiera
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-20
UDP maacutesa menudo usado para aplicaciones de lsquostreamingrsquomultimedia
tolerante a peacuterdidassensible a la velocidad
otros usos de UDPDNSSNMP
transferencia fiable sobre UDP antildeadir fiabilidad en la capa de aplicacioacuten
recuperacioacuten de errores especiacutefica para la aplicacioacuten
nordm puerto org nordm puerto dest
32 bits
datos de la aplicacioacuten(mensaje)
formato de segmento UDP
long checksumLongitud en
bytes del segmento
UDP incluido encabezado
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
0 311615
3-21
UDP checksum
Emisortrata contenidos del segmento como secuencia de enteros de 16 bitschecksum suma (en compl a 1) del contenido del segmentoel emisor pone el checksum en el campo UDP correspondiente
Receptorcalcula el checksum del segmento recibidocomprueba si el valor calculado = campo checksum
NO - error detectadoSIacute ndash error no detectado
iquestPuede haber errores aun asiacute Lo veremos maacutes adelante
Objetivo detectar ldquoerroresrdquo (pej bits alterados) en el segmento transmitido
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-22
Ejemplo de Checksum InternetNota iexclsuma en complemento a 1Ejemplo sumar dos enteros de 16 bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
acarreo
sumachecksum
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-23
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacutentransferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-24
Principios de transferencia de datos fiable
es importante en las capas de aplicacioacuten transporte y enlaceiexclen el ldquotop-10rdquo de las cuestiones importantes en redes
las caracteriacutesticas del canal no fiable determinaraacuten la complejidad del protocolo de transferencia de datos fiable (rdt lsquoreliable data transfer protocolrsquo)
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-25
Principios de transferencia de datos fiable
es importante en las capas de aplicacioacuten transporte y enlaceiexclen el ldquotop-10rdquo de las cuestiones importantes en redes
las caracteriacutesticas del canal no fiable determinaraacuten la complejidad del protocolo de transferencia de datos fiable (rdt lsquoreliable data transfer protocolrsquo)
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-26
Principios de transferencia de datos fiable
es importante en las capas de aplicacioacuten transporte y enlaceiexclen el ldquotop-10rdquo de las cuestiones importantes en redes
las caracteriacutesticas del canal no fiable determinaraacuten la complejidad del protocolo de transferencia de datos fiable (rdt lsquoreliable data transfer protocolrsquo)
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
rdt_send() llamada desde arriba (pej por la apl) Se le
pasan los datos a entregar al nivel superior del receptor
3-27
transferencia de datos fiable preliminares
ladoemisioacuten
ladorecepcioacuten
udt_send() llamado por rdt para transferir paquete por canal no fiable al receptor
rdt_rcv() llamado cuando el paquete llegue al extremo de
recepcioacuten del canal
deliver_data() llamada por rdt para entregar datos
al nivel superior
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-28
transferencia de datos fiable preliminaresVamos a
desarrollar el emisor y el receptor de un protocolo de transf de datos fiable (rdt) paso a pasoconsiderar soacutelo transferencia de datos unidireccional
iexclpero el control se transmitiraacute en ambas direccionesusar maacutequinas de estados finitos (MEFs) para definir emisor y receptor
estado1
estado2
evento que causa la transicioacutenaccioacuten tomada en la transicioacuten
estado desde este estado el siguiente
se determina uacutenicamente por el
siguiente evento
eventoacciones
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-29
Rdt10 transferencia fiable en canal fiable
canal subyacente perfectamente fiableno hay errores de bitno hay peacuterdida de paquetes
MEF diferente para emisor y receptorel emisor enviacutea dato al canal subyacenteel emisor lee datos del canal subyacente
esperarllamada de arriba packet = make_pkt(data)
udt_send(packet)
rdt_send(data)extract (packetdata)deliver_data(data)
esperar llamada de abajo
rdt_rcv(packet)
emisor receptor
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-30
Rdt20 canal con errores de bitel canal subyacente puede alterar bits del paquete
usar el checksum para detectar errores de bitla cuestioacuten iquestcoacutemo recuperarse de erroresreconocimientos(lsquoacknowledgementsrsquo ACKs) el receptor indica expliacutecitamente que la recepcioacuten fue buenareconocimientos negativos (NAKs) el receptor indica expliacutecitamente que el paquete teniacutea erroresel emisor retransmite el paquete si recibe un NAK
nuevos mecanismos en rdt20 (sobre rdt10)deteccioacuten de erroresrealimentacioacuten del receptormensajes de control (ACKNAK) del receptor al emisor
iquestCoacutemo se recuperan los humanos de ldquoerroresrdquodurante la conversacioacuten
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-31
Rdt20 canal con errores de bitel canal subyacente puede alterar bits del paquete
usar el checksum para detectar errores de bitla cuestioacuten iquestcoacutemo recuperarse de erroresreconocimientos(lsquoacknowledgementsrsquo ACKs) el receptor indica expliacutecitamente que la recepcioacuten fue buenareconocimientos negativos (NAKs) el receptor indica expliacutecitamente que el paquete teniacutea erroresel emisor retransmite el paquete si recibe un NAK
nuevos mecanismos en rdt20 (sobre rdt10)deteccioacuten de erroresrealimentacioacuten del receptormensajes de control (ACKNAK) del receptor al emisor
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-32
rdt20 especificacioacuten de la MEF
esperar llamada de
arriba
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
esperar ACK o NAK
esperar llamada de
abajoemisor
receptorrdt_send(data)
Λ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-33
rdt20 funcionamiento sin errores
esperar llamada de
arriba
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
esperar ACK o NAK
esperar llamada de
abajo
rdt_send(data)
Λ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-34
rdt20 caso de error
esperar llamada de
arriba
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
esperar ACK o NAK
esperar llamada de
abajo
rdt_send(data)
Λ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-35
iexcl rdt20 tiene un defecto fatal
iquestQueacute ocurre si ACK o NAK se corrompeniexcliexclel emisor no sabe queacuteocurrioacute en el receptorno es posible simplemente retransmitir se pueden crear duplicados
Manejo de duplicados el emisor retransmite el paquete actual si ACK o NAK no llegan bienel emisor antildeade un nuacutemero de secuencia a cada paqueteel receptor descarta (no entrega hacia arriba) el paquete duplicado
el emisor enviacutea un paquetey espera la respuesta delreceptor
parada y espera
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-36
rdt21 el emisor maneja ACKNAKs erroacuteneos
esperar llamada 0 de arriba
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
esperar ACK o NAK 0 udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isNAK(rcvpkt) )
sndpkt = make_pkt(1 data checksum)udt_send(sndpkt)
rdt_send(data)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isNAK(rcvpkt) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt)
esperar llamada 1 de arriba
esperar ACK o NAK 1
ΛΛ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-37
rdt21 el receptor maneja ACKNAKs erroacuteneos
esperar 0 de abajo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
esperar 1 de abajo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-38
rdt21 discusioacuten
Emisornordm secuencia antildeadido al paquete2 nuacutemeros valen (01) iquestPor queacutecomprobar si el ACKNAK recibido corruptoel doble de estados
el estado debe ldquorecordarrdquo si el paquete ldquoactualrdquo tiene nordm sec 0 oacute1
Receptordebe comprobar si el paquete recibido es duplicado
el estado indica si se espera el paquete 0 oacute 1
nota el receptor no puede saber si su uacuteltimo ACKNAK se recibioacute bien en el emisor
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-39
rdt22 un protocolo sin NAK
la misma funcionalidad que rdt21 usando soacutelo ACKsen lugar de NAK el receptor enviacutea ACK para el uacuteltimo paquete recibido bien
el receptor debe incluir expliacutecitamente el nordm de secuencia del paquete al que se refiere el ACK
un ACK duplicado en el emisor resulta en la misma accioacuten que un NAK retransmitir paquete actual
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-40
rdt22 fragmentos del emisor y el receptor
esperar llamada 0 de arriba
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
esperar ACK 0
fragmento MEF emisor
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
esperar 0 de abajo
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)fragmento MEF
receptor
Λ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-41
rdt30 canales con errores y peacuterdidas
Nueva suposicioacuten canal subyacente tambieacuten puede perder paquetes (datos o ACKs)
las retransmisiones de checksum nordm secuencia ACKs ayudan pero no son suficiente
liacutenea de trabajo emisor espera un tiempo ldquorazonablerdquo al ACKretransmite si no recibe ACK en ese tiemposi el paquete (o ACK) soacutelo se retrasoacute (no se perdioacute)
las retransmisiones estaraacuten repetidas pero con el nordm secuencia esto estaacute resueltoel receptor debe indicar nordm secuencia del paquete al que se aplica el ACK
requiere un temporizadorRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-42
rdt30 emisorsndpkt = make_pkt(0 data checksum)udt_send(sndpkt)start_timer
rdt_send(data)
espe-rar
ACK 0
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt1) )
esperar llamada 1 de arriba
sndpkt = make_pkt(1 data checksum)udt_send(sndpkt)start_timer
rdt_send(data)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt0) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)
stop_timerstop_timer
udt_send(sndpkt)start_timer
timeout
udt_send(sndpkt)start_timer
timeout
rdt_rcv(rcvpkt)
esperar llamada 0 de arriba
esper-rar
ACK 1
Λrdt_rcv(rcvpkt)
ΛΛ
Λ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-43
rdt30 funcionando
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-44
rdt30 funcionando
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-45
Rendimiento del rdt30
rdt30 funciona pero el rendimiento es muy malopej enlace de 1Gbs 15ms retardo prop paquete 8k bits
si RTT=30 ms 1 paquete de 1KB cada 30 sg -gt 33KBs de 1Gbpsiexcliexclel protocolo de red limita el uso de los recursos fiacutesicos
dosmicrosegun 8bps10bits 8000
9 ===RLdtrans
U emisor utilizacioacuten ndash fraccioacuten de tiempo que el emisor estaacuteocupado emitiendo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-46
rdt30 funcionamiento de parada y espera
primer bit transmitido t = 0
emisor receptor
RTT
uacuteltimo bit transmitido t = L R
llega primer bitllega uacuteltimo bit enviar ACK
llega ACK enviar siguiente paquete t = RTT + L R
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-47
Protocolos segmentados (en cadena)segmentar el emisor permite que haya muacuteltiples
paquetes ldquoen caminordquo pendientes de ACKel rango de nordm de secuencia debe aumentarsehay que antildeadir buacutefferes en el emisor yo el receptor
hay dos formas geneacutericas de protocolos segmentados retroceder N (lsquogo-Back-Nrsquo) y repeticioacuten selectiva (lsquoselective repeatrsquo)
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-48
segmentacioacuten uso mejorado
primer bit transmitido t = 0
emisor receptor
RTT
uacuteltimo bit transmitido t = L R
llega el primer bitllega uacuteltimo bit 1er paquete enviar ACK
llega ACK enviar siguiente paquete t = RTT + L R
llega uacuteltimo bit 2ordm paquete enviar ACKllega uacuteltimo bit 3er paquete enviar ACK
iexcliexclMejora en la utilizacioacuten en un factor de 3
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-49
Protocolos segmentados
Retroceder N vista globalel emisor puede tener hasta N paquetes pendientes de ACKel receptor soacutelo enviacutea ACKs acumulativos
no lo enviacutea para un paquete si hay una laguna
el emisor tiene un temporizador para el paquete maacutes antiguo sin ACK
si llega a 0 retransmitir paquetes sin ACK
Repeticioacuten selectiva vista globalel emisor puede tener hasta N paquetes pendientes de ACKel receptor enviacutea ACK para cada paqueteel emisor mantiene un temporizador para cada paquete sin ACK
si llega a 0 retransmitir soacutelo paquete sin ACK
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-50
Retroceder N (GBN)Emisor
nordm de secuencia de k bits en cabecera del paqueteventana de hasta N paquetes consecutivos sin ACK
ACK(n) ACK para todos los paquetes hasta nordm sec n (inclusive) ldquoACK acumulativordquo
puede recibir ACKs duplicados (ver receptor)temporizador para cada paquete en camino timeout(n) retransmitir paquete n y todos los de mayor nordm sec en la ventanaRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-51
GBN MEF ampliada para el emisor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-52
GBN MEF ampliada del receptor
Enviar ACK para paquete correcto con mayor nordm de secuencia en orden
se pueden generar ACKs duplicadossoacutelo hay que recordar expectedseqnum
paquete fuera de ordendescartar (no se guarda) -gt iexcliexclno hay buffer en el receptorReenviar ACK para paquete con mayor nordm secuencia en orden
Wait
udt_send(sndpkt)default
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(expectedseqnumACKchksum)
Λ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-53
GBN enfunciona-miento
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-54
Repeticioacuten selectiva (SR)
el receptor enviacutea ACK individual para cada paquete correcto
se deben guardar los paquetes en buffers seguacuten sea necesario para entregarlos en orden a la capa superior
el emisor soacutelo reenviacutea paquetes para los que no reciba ACK
un temporizador para cada paquete en caminoventana de emisor
hay N nordm de secuencia consecutivosde nuevo limita nordmsec de los paquetes en camino
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-55
Repeticioacuten selectiva ventanas de emisor y receptor
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-56
Repeticioacuten selectiva
datos de arribasi sig nordm sec en la ventana vaciacuteo enviar paquete
timeout(n)reenviar paquete n reiniciar temporizador
ACK(n) en [sendbasesendbase+N]
marcar paquete n como recibidosi n era el paquete sin ACK con menor nordm sec avanzar el inicio de la ventana al siguiente nordm sec sin ACK
emisorpaquete n en [rcvbase rcvbase+N-1]
enviar ACK(n)fuera de orden guardar en bufferen orden entregar (junto con los previamente guardados por fuera de orden) avanzar ventana al siguiente pendiente de recibir
paquete n en [rcvbase-Nrcvbase-1]
ACK(n)otro caso
ignorar
receptor
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-57
repeticioacuten selectiva en funcionamiento
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-58
Repeticioacuten selectivadilema
Ejemplo nos sec 0 1 2 3tamantildeo ventana=3
iexclel receptor no ve diferencia entre ambos casosen (a) pasa datos repetidos por nuevos de forma incorrecta
P iquestrelacioacuten entre nordm de nos de secuencia vaacutelidos y tamantildeo de la ventanaRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-59
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacuten transferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-60
TCP Visioacuten global RFCs 793 1122 1323 2018 2581
datos full duplexflujo de datos bidireccional en la misma conexioacutenMSS Maacuteximo tamantildeo de segmento (lsquomaximum segment sizersquo)
orientado a conexioacutenestablecimiento conexioacuten (intercambio de mensajes) inicializa estados antes del intercambio de datos
con control de flujoel emisor no satura al receptor
punto a puntoun emisor un receptor
flujo de bytes fiable en orden
no hay ldquoliacutemites de mensajerdquosegmentado
el control de flujo y congestioacuten de TCP fijan el tamantildeo de la ventanabuffers de emisioacuten y recepcioacuten
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-61
estructura del segmento TCP
nordm puerto origen nordm puerto dest
32 bits
datosaplicacioacuten
(long variable)
nordm secuencianordm ACK
ventana recepcioacutenpuntero datos urgchecksum
FSRPAUlong encab
notused
Opciones (long variable)
URG datos urgentes(la aplicacioacuten debe
hacer algo)ACK nordm ACK
vaacutelidoPSH push enviar
estos datos ya a laaplicacioacuten
(el programador no puede manejarlo)
RST SYN FINestab conexioacuten
(comandos estab cerrar)
nordm bytes que el receptorestaacute dispuestoa aceptar
contados en bytes de datos(iexcliexclno segmentos)
checksum Internet
(como en UDP)
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
0 15 16 31
3-62
TCP nuacutems secuencia y ACKsnos secuencia
ldquonordmrdquo flujo de bytes del 1er byte de datos del segmento
ACKsnordm sec del siguiente byte esperado de la otra parteACK acumulativo
P coacutemo se tratan los segmentos fuera de orden
R la especificacioacuten de TCP no lo dice lo que haga el implementador
Host A Host B
Seq=42 ACK=79 data = lsquoCrsquo
Seq=79 ACK=43 data = lsquoCrsquo
Seq=43 ACK=80
Usuarioescribe
lsquoCrsquo
el host enviacuteaACK por ladevolucioacuten
de lsquoCrsquo
el host enviacutea ACK por lsquoCrsquodevuelve lsquoCrsquo
tiempoejemplo sencillo de telnet
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-63
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacutentransferencia de datos fiable control de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-64
TCP gestioacuten de la conexioacutenRecordatorio en TCP emisor y
receptor establecen una ldquoconexioacutenrdquo antes de intercambiar segmentos de datosinicializar variables TCP
nos de secuenciabuffers info de control de flujo (pej RcvWindow)
el cliente inicia la conexioacutenSocket clientSocket = new Socket(rdquonombrehostrdquonumero puerto)
el servidor el cliente contacta con eacutelSocket connectionSocket = welcomeSocketaccept()
Establecimiento en 3 pasos
Paso 1 el cliente envia segmento SYN al servidor
especifica nordm secuencia inicialsin datos
Paso 2 el servidor recibe SYN responde con segmento SYNACK
el servidor crea buffersespecifica el nordm sec inicial del servidor
Paso 3 el cliente recibe SYNACK responde con segmento ACK que puede contener datos
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-65
TCP gestioacuten de la conexioacuten (cont)
Cerrar una conexioacuten
el cliente cierra el socketclientSocketclose()
Paso 1 el sistema terminal del cliente enviacutea el segmento de control TCP FIN al servidor
Paso 2 el servidor recibe FIN responde con ACK Cierra la conexioacuten enviacutea FIN
cliente
FIN
servidor
ACK
ACK
FIN
cerrar
cerrar
cerrado
espe
ra
tem
pori
zada
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-66
TCP gestioacuten de la conexioacuten (cont)
Paso 3 el cliente recibe FIN responde con ACK
entra en ldquoespera temporizadardquo ndashresponderaacute con ACK a los FINs que reciba
Paso 4 el servidor recibe ACK Conexioacuten cerrada
Nota con una pequentildea modificacioacuten puede manejar FINs simultaacuteneos
cliente
FIN
servidor
ACK
ACK
FIN
cerrando
cerrando
cerrada
espe
ra
tem
pori
zada
cerrada
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-67
TCP gestioacuten de la conexioacuten (cont)
ciclo de vidade cliente TCP
ciclo de vidade servidor TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-68
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacutentransferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-69
TCP transferencia de datos fiable
TCP crea servicio rdtsobre el servicio no fiable de IPsegmentos en cadenaacks acumulativosTCP usa un uacutenico temporizador de retransmisioacuten
retransmisiones disparadas por
eventos de temporizador a ceroACKs duplicados
inicialmente considerar emisor TCP simplificado
ignorar ACKs duplicadosignorar control de flujo congestioacuten de flujo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-70
eventos de emisioacuten TCPdatos recibidos de la
aplicacioacutencrear segmento con nordmsecnordm sec es el nordm del 1er byte del segmento dentro del flujo de bytesiniciar temporizador si no lo estaacuteintervalo de expiracioacuten TimeOutInterval
lsquotimeoutrsquo (expiracioacuten)retransmitir segmento que la provocoacutereiniciar temporizador
ACK recibidosi se refiere a segmentos sin ACK previo
actualizar aquellos a los que les falta el ACKiniciar temporizador si hay segmentos pendientes
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-71
emisor TCP (simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (siempre) switch(suceso)
suceso datos recibidos de la aplicacioacuten de capa superiorcrear segmento TCP con nordm sec NextSeqNum if (temporizador no en marcha)
iniciar temporizadorpasar segmento a IP NextSeqNum = NextSeqNum + length(data)
suceso temporizador expiroacuteretransmitir segmento sin ACK con el menor nordm sec iniciar contador
suceso recibido ACK con valor del campo ACK == yif (y gt SendBase)
SendBase = yif (hay segmentos sin ACK)
iniciar temporizador
fin de loop siempre
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-72
TCP situaciones para retransmisioacutenHost A
Seq=100 20 bytes data
ACK=100
tiempotimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq=
92 t
imeo
ut
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
peacuterdida
tim
eout
situacioacuten de ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tiempo
Seq=
92 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
SendBase= 100
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-73
TCP situaciones para retransmisioacuten (maacutes)Host A
Seq=92 8 bytes data
ACK=100
peacuterdida
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
tiempo
SendBase= 120
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-74
generacioacuten de ACK en TCP [RFC 1122 RFC 2581]
Evento en Receptor
Llegada de segmento en orden connordm sec esperado Todos hasta elnordm sec esperado ya tienen ACK
Llegada de segmento en orden connordm sec esperado Hay otro seg en orden esperando transm de ACK
Llegada de nordm de sec fuera de orden mayor que el esperado Detectada laguna
Llegada de segmento que comple-ta parcialmente una laguna
Receptor TCP accioacuten
ACK retardado Esperar hasta 500msal siguiente segmento Si no llega enviarACK
Inmediatamente enviar ACK acumulativopara ambos segmentos
Inmediatamente enviar ACK duplicadoindicando nordm sec del siguiente byte esperado
Inmediatamente enviar ACK suponiendo que el segmento empieza en el liacutemite inferior de la laguna
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-75
Retransmisioacuten raacutepida
periacuteodo de expiracioacuten a menudo relativamente largo
largo retardo antes de reenviar el paquete perdido
se detectan segmentos perdidos por ACKs repetidos
el emisor a menudo enviacutea varios segmentos seguidossi se pierde un segmento seguramente habraacute varios ACKs repetidos
si el emisor recibe 3 ACKs por los mismos datos supone que el segmento de despueacutes de los datos con ACK se perdioacute
retransmisioacuten raacutepida reenviar segmento antes de que expire el temporizador
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-76
Host A
tim
eout
Host B
tiempo
X
reenviar 2ordm segmento
Figura 337 Reenviar segmento tras triple ACKRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-77
suceso recibido ACK con campo ACK con valor == s if (s gt SendBase)
SendBase = sif (hay segmentos pendientes de ACK)
iniciar temporizador
else incrementar cuenta de ACKs duplicados recibidos para s if (cuenta de ACKs duplicados para s == 3)
reenviar segmento con nordm sec s
Algoritmo de retransmisioacuten raacutepida
un ACK duplicado paraun segmento ya con ACK
retransmisioacuten raacutepida
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
Algoritmo de Nagle [RFC896]
Las conexiones interactivas (ssh telnet) suelen enviar segmentos con muy pocos datos (uno dos bytes)
iexclPeacuterdida de eficienciaEs maacutes interesante reunir varios datos procedentes de la aplicacioacuten y mandarlos todos juntosEl algoritmo de Nagle indica que no se enviacuteen nuevos segmentos mientras queden reconocimientos pendientes
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte 3-78
Algoritmo de Nagle [RFC896]
Evento en emisor
Llegada de datos de la aplicacioacutenHay ACKs pendientes
Llegada de un ACK pendiente
Llegada de datos de la aplicacioacutenNo hay ACKs pendientes
Llegada de datos de la aplicacioacutenNo queda sitio en el buffer delemisor
Accioacuten en emisor
Acumular datos en el buffer del emisor
Inmediatamente enviar todos los segmen-tos acumulados en buffer
Inmediatamente enviar datos al receptor
Inmediatamente enviar datos si lo permi-te la ventana aunque no se hayan reci-bido ACKs previos
Capa de Transporte 3-79Rauacutel Duraacuten Nacho Peacuterez v14
3-80
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacutentransferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-81
en TCP el receptor tiene un buffer de recepcioacuten
servicio de equilibrado de velocidad equilibrar la velocidad de enviacuteo a la de la aplicacioacuten vaciando el buffer de recepcioacutenla aplicacioacuten puede ser
lenta leyendo del buffer
el emisor no saturaraacuteel buffer del receptor
a base de enviar mucho muy seguido
control de flujoTCP Control de flujo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-82
TCP control de flujo coacutemo funciona
(suponer que el receptor TCP descarta segmentos fuera de orden)hay sitio en el buffer
RcvWindow = RcvBuffer -[LastByteRcvd - LastByteRead]
el receptor anuncia el espacio libre incluyendo el valor RcvWindow en los segmentosel emisor limita los datos sin ACK a RcvWindow
garantiza que el buffer de recepcioacuten no se desborda
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-83
TCP lsquoRound Trip Timersquo y lsquoTimeoutrsquo
P iquestcoacutemo fijar el tiempo de lsquotimeoutrsquo de TCPmaacutes que RTT
pero RTT variacuteasi demasiado corto lsquotimeoutrsquo prematuro
retransmisiones innecesarias
si demasiado largo reaccioacuten lenta a peacuterdidas
P iquestcoacutemo estimar RTTSampleRTT tiempo medido desde transmisioacuten de un segmento hasta recepcioacuten de ACK
ignorar retransmisionesSampleRTT variaraacute queremos un valor maacutes ldquoestablerdquo
promedio de varias mediciones recientes no el valor actual
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-84
TCP lsquoRound Trip Timersquo y lsquoTimeoutrsquo
EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT
media moacutevil ponderada exponencialla influencia de una muestra pasada decrece exponencialmentevalor tiacutepico α = 0125
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-85
Ejemplo de estimacioacuten de RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106time (seconnds)
RTT
(mill
iseco
nds)
SampleRTT Estimated RTT
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-86
TCP lsquoRound Trip Timersquo y lsquoTimeoutrsquoFijar el tiempo de expiracioacuten (lsquotimeoutrsquo)
EstimatedRTT maacutes ldquomargen de seguridadrdquogran variacioacuten en EstimatedRTT -gt mayor margen de seguridad
primero estimar cuaacutento SampleRTT se desviacutea de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-β)DevRTT +β|SampleRTT-EstimatedRTT|
(tiacutepicamente β = 025)
Entonces fijar el tiempo de expiracioacuten
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
Algoritmo de Karn
Si recibimos el reconocimiento de un paquete retransmitido no tenemos forma de saber a cuaacutel de las retransmisiones corresponde ese reconocimientoPor ello se ignoran los paquetes retransmitidos a la hora de computar el RTTEste procedimiento se denomina algoritmo de Karn
3-87Capa de TransporteRauacutel Duraacuten Nacho Peacuterez v14
3-88
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacuten transferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-89
Principios de control de la congestioacuten
Congestioacuteninformal ldquodemasiadas fuentes enviando demasiados datos demasiado deprisa para que la red lo pueda asimilarrdquoiexcliexcldiferente a control de flujosiacutentomas
paquetes perdidos (desbordamiento de bufferes en los routers)grandes retardos (encolado en los bufferes de los routers)iexcliexclun problema ldquotop-10rdquo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-90
Formas de abordar el control de congestioacuten
control de terminal a terminalno hay realimentacioacuten expliacutecita de la redla congestioacuten se deduce por el retardo y las peacuterdidas observadas por los terminaleseste es el meacutetodo de TCP
control asistido por la redlos routers proporcionan realimentacioacuten a los terminales
un bit que indica la congestioacuten (SNA DECnet TCPIP ECN ATM)indicacioacuten expliacutecita de la tasa a la que el emisor deberiacutea enviar
Dos formas principales de abordarla
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-91
Caso de estudio servicio ABR de las redes ATM
ABR lsquoAvailable Bit Ratersquo(Tasa de bits disponible)
ldquoservicio elaacutesticordquosi la ruta del emisor ldquoinfra-cargadardquo
el emisor deberiacutea usar el ancho de banda disponible
si la ruta del emisor estaacutecongestionada
el emisor se limita a la tasa garantizada
ceacutelulas RM (lsquoresource managementrsquo gestioacuten de recursos) enviado por el emisor intercalado con las celdas de datoslos bits en las celdas RM se rellenan por los switches (ldquoasistido por la redrdquo)
bit NI no hay mejora en la velocidad (congestioacuten suave)bit CI indica congestioacuten
las celdas RM se devuelven al emisor por el receptor sin modificar
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-92
Caso de estudio servicio ABR de las redes ATM
campo ER (lsquoexplicit ratersquo tasa expliacutecita) de 2 bytes en celda RM
un switch congestionado puede rebajar el valor ERla tasa del emisor es asiacute la maacutexima que puede aguantar la ruta
bit EFCI en celdas de datos se pone a 1 en switch congestionado
si la celda que precede a la RM tiene EFCI a 1 el emisor pone a1 el bit CI en la celda RM devueltaRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-93
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacuten transferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-94
control de congestioacuten en TCP incremento aditivo decremento multiplicativo
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
filosofiacutea incrementar la tasa de transmisioacuten (tamantildeo de la ventana) sondeando el ancho de banda accesible hasta que hay peacuterdidas
incremento aditivo incrementar cwnd en 1 MSS cada RTT hasta que haya peacuterdidasdecremento multiplicativo dividir cwnd por 2 cuando las haya
tiempo
cwnd
tam
antildeo
de la
ven
tana
co
n co
nges
tioacuten
diente de sierra sondeo del ancho
de banda
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-95
Control de congestioacuten TCP detalles
el emisor limita la transmisioacutenLastByteSent-LastByteAcked
le cwnd
lsquogrosso modorsquo
cwnd es dinaacutemica funcioacuten de la congestioacuten de la red percibida
iquestCoacutemo percibe el emisor la congestioacutenevento de peacuterdida = expiracioacuten o 3 ACKs duplicadosel emisor reduce la tasa (cwnd) tras un evento de peacuterdida
3 mecanismosAIMDarranque lentoconservador tras eventos de expiracioacuten
tasa = cwndRTT Bytess
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-96
TCP Arranque lento
cuando se inicia la conexioacuten la tasa se incrementa exponencialmente hasta la primera peacuterdida
inicialmente cwnd = 1 MSScwnd se dobla cada RTTse incrementa cwnd con cada ACK recibido
resumen la tasa inicial es baja pero crece exponencialmente raacutepido
Host A
un segmento
RTT
Host B
tiempo
2 segmentos
4 segmentos
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-97
Refinado deduccioacuten de peacuterdidastras 3 ACKs duplicados
cwnd se divide por 2la ventana ya crece linealmente
pero tras una expiracioacutencwnd en cambio se pone a 1 MSS la ventana entonces crece exponencialmentehasta un umbral luego linealmente
3 ACKs duplicados indica que la red es capaz de entregar algunos segmentos
expiracioacuten indica una situacioacuten de congestioacuten ldquomaacutes alarmanterdquo
Filosofiacutea
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-98
RefinadoP iquestcuaacutendo deberiacutea
pasarse de incremento exponencial a lineal
R cuando cwnd llegue a 12 de su valor antes de la expiracioacuten
Implementacioacutenvariable ssthreshcon una peacuterdida ssthreshse pone a 12 de cwndjusto antes de la peacuterdida
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-99
Resumen Control de congestioacuten TCP
expiracioacutenssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmitir segmento que falta
Λcwnd gt ssthresh
evitacioacuten decongestion
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmitir nuevo(s) segmento(s) seguacuten se pueda
ACK nuevo
dupACKcount++ACK duplicado
recuperacioacuten raacutepida
cwnd = cwnd + MSStransmitir nuevo(s) segmento(s) seguacuten se pueda
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmitir segmento que falta
dupACKcount == 3
expiracioacutenssthresh = cwnd2
cwnd = 1 dupACKcount = 0
retransmitir segmento que faltassthresh= cwnd2
cwnd = ssthresh + 3retransmitir segmento que falta
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
ACK nuevo
arranque lento
expiracioacutenssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmitir segmento que falta
cwnd = cwnd+MSSdupACKcount = 0transmitir nuevo(s) segmento(s) seguacuten se pueda
ACK nuevodupACKcount++ACK duplicado
Λcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NewACK
NewACK
NewACK
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-100
eficiencia de TCP
iquestcuaacutel es la tasa media de TCP en funcioacuten del tamantildeo de ventana y RTT
ignorar el arranque raacutepidosea W el tamantildeo de la ventana cuando ocurre una peacuterdida
cuando la ventana es W la tasa es WRTTjusto tras la peacuterdida la ventana pasa a W2 y la tasa a W2RTTla tasa media es 075 WRTT
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-101
Futuros de TCP TCP sobre ldquotubos largos y gruesosrdquo
ejemplo segmentos de 1500 bytes RTT 100ms se quiere tasa de 10 Gbps requiere tamantildeo de ventana W = 83333 segmentos en traacutensitotasa de transferencia en funcioacuten de la tasa de peacuterdidas
L = 210-10 iexcliexcluna tasa de peacuterdidas muy bajanuevas versiones de TCP para alta velocidad
LRTTMSSsdot221
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-102
objetivo de equidad si K sesiones TCP comparten el mismo enlace cuello de botella de ancho de banda R cada uno deberiacutea tener una tasa media de RK
conexioacuten TCP 1
router cuello de botella
capacidad Rconexioacuten TCP 2
Equidad en TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-103
iquestPor queacute es equitativoTCP2 sesiones que compiten
el incremento aditivo da una pendiente de 1 en los incrementosel decremento multiplicativo decrementa la tasa proporcionalmente
R
R
reparto equitativo del ancho de banda
tasa de transferencia
de la conexioacuten 1
tasa
de
tran
sfer
enc i
a
de la
con
exioacute
n 2
evitacioacuten de congestioacuten incremento aditivopeacuterdida decrementar ventana en un factor de 2evitacioacuten de congestioacuten incremento aditivo
peacuterdida decrementar ventana en un factor de 2
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-104
Equidad (maacutes)Equidad y UDP
las aplicaciones multimedia a menudo no usan TCP
no quieren que la tasa de transf se limite por el control de congestioacuten
por eso usan UDPenviacutean audiovideo a tasa constante toleran peacuterdida de paquetes
Equidad y conexiones TCP paralelasnada impide a una aplicacioacuten abrir conexiones paralelas entre 2 hostslos navegadores lo hacenejemplo enlace de tasa R permite 9 conexiones
una aplicacioacuten pide 1 TCP obtiene tasa R10una aplicacioacuten pide 11 TCPs iexcliexclobtiene tasa R2
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-105
Capiacutetulo 3 Resumenprincipios detraacutes de los servicios de la capa de transporte
multiplexacioacuten desmultiplexacioacutentransferencia de datos fiablecontrol de flujocontrol de congestioacuten
instanciacioacuten e implementacioacuten en Internet
UDPTCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-19
UDP User Datagram Protocol [RFC 768]protocolo de transporte de Internet sin adornos ldquocon lo puestordquoal ser un servicio de ldquohaz lo que puedasrdquo los segmentos UDP pueden
perderseser entregados fuera de orden a la aplicacioacuten
sin conexioacutensin establecimiento de conexioacuten entre el emisor y el receptor UDPcada segmento UDP se trata de forma independiente de los otros
iquestPor queacute existe UDPno hay establecimiento de la conexioacuten (que puede antildeadir retardo)sencillo no hay estado ni en el emisor ni en el receptorencabezado pequentildeono hay control de congestioacuten UDP puede disparar todo lo raacutepido que se quiera
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-20
UDP maacutesa menudo usado para aplicaciones de lsquostreamingrsquomultimedia
tolerante a peacuterdidassensible a la velocidad
otros usos de UDPDNSSNMP
transferencia fiable sobre UDP antildeadir fiabilidad en la capa de aplicacioacuten
recuperacioacuten de errores especiacutefica para la aplicacioacuten
nordm puerto org nordm puerto dest
32 bits
datos de la aplicacioacuten(mensaje)
formato de segmento UDP
long checksumLongitud en
bytes del segmento
UDP incluido encabezado
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
0 311615
3-21
UDP checksum
Emisortrata contenidos del segmento como secuencia de enteros de 16 bitschecksum suma (en compl a 1) del contenido del segmentoel emisor pone el checksum en el campo UDP correspondiente
Receptorcalcula el checksum del segmento recibidocomprueba si el valor calculado = campo checksum
NO - error detectadoSIacute ndash error no detectado
iquestPuede haber errores aun asiacute Lo veremos maacutes adelante
Objetivo detectar ldquoerroresrdquo (pej bits alterados) en el segmento transmitido
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-22
Ejemplo de Checksum InternetNota iexclsuma en complemento a 1Ejemplo sumar dos enteros de 16 bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
acarreo
sumachecksum
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-23
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacutentransferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-24
Principios de transferencia de datos fiable
es importante en las capas de aplicacioacuten transporte y enlaceiexclen el ldquotop-10rdquo de las cuestiones importantes en redes
las caracteriacutesticas del canal no fiable determinaraacuten la complejidad del protocolo de transferencia de datos fiable (rdt lsquoreliable data transfer protocolrsquo)
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-25
Principios de transferencia de datos fiable
es importante en las capas de aplicacioacuten transporte y enlaceiexclen el ldquotop-10rdquo de las cuestiones importantes en redes
las caracteriacutesticas del canal no fiable determinaraacuten la complejidad del protocolo de transferencia de datos fiable (rdt lsquoreliable data transfer protocolrsquo)
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-26
Principios de transferencia de datos fiable
es importante en las capas de aplicacioacuten transporte y enlaceiexclen el ldquotop-10rdquo de las cuestiones importantes en redes
las caracteriacutesticas del canal no fiable determinaraacuten la complejidad del protocolo de transferencia de datos fiable (rdt lsquoreliable data transfer protocolrsquo)
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
rdt_send() llamada desde arriba (pej por la apl) Se le
pasan los datos a entregar al nivel superior del receptor
3-27
transferencia de datos fiable preliminares
ladoemisioacuten
ladorecepcioacuten
udt_send() llamado por rdt para transferir paquete por canal no fiable al receptor
rdt_rcv() llamado cuando el paquete llegue al extremo de
recepcioacuten del canal
deliver_data() llamada por rdt para entregar datos
al nivel superior
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-28
transferencia de datos fiable preliminaresVamos a
desarrollar el emisor y el receptor de un protocolo de transf de datos fiable (rdt) paso a pasoconsiderar soacutelo transferencia de datos unidireccional
iexclpero el control se transmitiraacute en ambas direccionesusar maacutequinas de estados finitos (MEFs) para definir emisor y receptor
estado1
estado2
evento que causa la transicioacutenaccioacuten tomada en la transicioacuten
estado desde este estado el siguiente
se determina uacutenicamente por el
siguiente evento
eventoacciones
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-29
Rdt10 transferencia fiable en canal fiable
canal subyacente perfectamente fiableno hay errores de bitno hay peacuterdida de paquetes
MEF diferente para emisor y receptorel emisor enviacutea dato al canal subyacenteel emisor lee datos del canal subyacente
esperarllamada de arriba packet = make_pkt(data)
udt_send(packet)
rdt_send(data)extract (packetdata)deliver_data(data)
esperar llamada de abajo
rdt_rcv(packet)
emisor receptor
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-30
Rdt20 canal con errores de bitel canal subyacente puede alterar bits del paquete
usar el checksum para detectar errores de bitla cuestioacuten iquestcoacutemo recuperarse de erroresreconocimientos(lsquoacknowledgementsrsquo ACKs) el receptor indica expliacutecitamente que la recepcioacuten fue buenareconocimientos negativos (NAKs) el receptor indica expliacutecitamente que el paquete teniacutea erroresel emisor retransmite el paquete si recibe un NAK
nuevos mecanismos en rdt20 (sobre rdt10)deteccioacuten de erroresrealimentacioacuten del receptormensajes de control (ACKNAK) del receptor al emisor
iquestCoacutemo se recuperan los humanos de ldquoerroresrdquodurante la conversacioacuten
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-31
Rdt20 canal con errores de bitel canal subyacente puede alterar bits del paquete
usar el checksum para detectar errores de bitla cuestioacuten iquestcoacutemo recuperarse de erroresreconocimientos(lsquoacknowledgementsrsquo ACKs) el receptor indica expliacutecitamente que la recepcioacuten fue buenareconocimientos negativos (NAKs) el receptor indica expliacutecitamente que el paquete teniacutea erroresel emisor retransmite el paquete si recibe un NAK
nuevos mecanismos en rdt20 (sobre rdt10)deteccioacuten de erroresrealimentacioacuten del receptormensajes de control (ACKNAK) del receptor al emisor
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-32
rdt20 especificacioacuten de la MEF
esperar llamada de
arriba
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
esperar ACK o NAK
esperar llamada de
abajoemisor
receptorrdt_send(data)
Λ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-33
rdt20 funcionamiento sin errores
esperar llamada de
arriba
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
esperar ACK o NAK
esperar llamada de
abajo
rdt_send(data)
Λ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-34
rdt20 caso de error
esperar llamada de
arriba
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
esperar ACK o NAK
esperar llamada de
abajo
rdt_send(data)
Λ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-35
iexcl rdt20 tiene un defecto fatal
iquestQueacute ocurre si ACK o NAK se corrompeniexcliexclel emisor no sabe queacuteocurrioacute en el receptorno es posible simplemente retransmitir se pueden crear duplicados
Manejo de duplicados el emisor retransmite el paquete actual si ACK o NAK no llegan bienel emisor antildeade un nuacutemero de secuencia a cada paqueteel receptor descarta (no entrega hacia arriba) el paquete duplicado
el emisor enviacutea un paquetey espera la respuesta delreceptor
parada y espera
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-36
rdt21 el emisor maneja ACKNAKs erroacuteneos
esperar llamada 0 de arriba
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
esperar ACK o NAK 0 udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isNAK(rcvpkt) )
sndpkt = make_pkt(1 data checksum)udt_send(sndpkt)
rdt_send(data)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isNAK(rcvpkt) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt)
esperar llamada 1 de arriba
esperar ACK o NAK 1
ΛΛ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-37
rdt21 el receptor maneja ACKNAKs erroacuteneos
esperar 0 de abajo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
esperar 1 de abajo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-38
rdt21 discusioacuten
Emisornordm secuencia antildeadido al paquete2 nuacutemeros valen (01) iquestPor queacutecomprobar si el ACKNAK recibido corruptoel doble de estados
el estado debe ldquorecordarrdquo si el paquete ldquoactualrdquo tiene nordm sec 0 oacute1
Receptordebe comprobar si el paquete recibido es duplicado
el estado indica si se espera el paquete 0 oacute 1
nota el receptor no puede saber si su uacuteltimo ACKNAK se recibioacute bien en el emisor
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-39
rdt22 un protocolo sin NAK
la misma funcionalidad que rdt21 usando soacutelo ACKsen lugar de NAK el receptor enviacutea ACK para el uacuteltimo paquete recibido bien
el receptor debe incluir expliacutecitamente el nordm de secuencia del paquete al que se refiere el ACK
un ACK duplicado en el emisor resulta en la misma accioacuten que un NAK retransmitir paquete actual
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-40
rdt22 fragmentos del emisor y el receptor
esperar llamada 0 de arriba
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
esperar ACK 0
fragmento MEF emisor
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
esperar 0 de abajo
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)fragmento MEF
receptor
Λ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-41
rdt30 canales con errores y peacuterdidas
Nueva suposicioacuten canal subyacente tambieacuten puede perder paquetes (datos o ACKs)
las retransmisiones de checksum nordm secuencia ACKs ayudan pero no son suficiente
liacutenea de trabajo emisor espera un tiempo ldquorazonablerdquo al ACKretransmite si no recibe ACK en ese tiemposi el paquete (o ACK) soacutelo se retrasoacute (no se perdioacute)
las retransmisiones estaraacuten repetidas pero con el nordm secuencia esto estaacute resueltoel receptor debe indicar nordm secuencia del paquete al que se aplica el ACK
requiere un temporizadorRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-42
rdt30 emisorsndpkt = make_pkt(0 data checksum)udt_send(sndpkt)start_timer
rdt_send(data)
espe-rar
ACK 0
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt1) )
esperar llamada 1 de arriba
sndpkt = make_pkt(1 data checksum)udt_send(sndpkt)start_timer
rdt_send(data)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt0) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)
stop_timerstop_timer
udt_send(sndpkt)start_timer
timeout
udt_send(sndpkt)start_timer
timeout
rdt_rcv(rcvpkt)
esperar llamada 0 de arriba
esper-rar
ACK 1
Λrdt_rcv(rcvpkt)
ΛΛ
Λ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-43
rdt30 funcionando
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-44
rdt30 funcionando
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-45
Rendimiento del rdt30
rdt30 funciona pero el rendimiento es muy malopej enlace de 1Gbs 15ms retardo prop paquete 8k bits
si RTT=30 ms 1 paquete de 1KB cada 30 sg -gt 33KBs de 1Gbpsiexcliexclel protocolo de red limita el uso de los recursos fiacutesicos
dosmicrosegun 8bps10bits 8000
9 ===RLdtrans
U emisor utilizacioacuten ndash fraccioacuten de tiempo que el emisor estaacuteocupado emitiendo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-46
rdt30 funcionamiento de parada y espera
primer bit transmitido t = 0
emisor receptor
RTT
uacuteltimo bit transmitido t = L R
llega primer bitllega uacuteltimo bit enviar ACK
llega ACK enviar siguiente paquete t = RTT + L R
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-47
Protocolos segmentados (en cadena)segmentar el emisor permite que haya muacuteltiples
paquetes ldquoen caminordquo pendientes de ACKel rango de nordm de secuencia debe aumentarsehay que antildeadir buacutefferes en el emisor yo el receptor
hay dos formas geneacutericas de protocolos segmentados retroceder N (lsquogo-Back-Nrsquo) y repeticioacuten selectiva (lsquoselective repeatrsquo)
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-48
segmentacioacuten uso mejorado
primer bit transmitido t = 0
emisor receptor
RTT
uacuteltimo bit transmitido t = L R
llega el primer bitllega uacuteltimo bit 1er paquete enviar ACK
llega ACK enviar siguiente paquete t = RTT + L R
llega uacuteltimo bit 2ordm paquete enviar ACKllega uacuteltimo bit 3er paquete enviar ACK
iexcliexclMejora en la utilizacioacuten en un factor de 3
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-49
Protocolos segmentados
Retroceder N vista globalel emisor puede tener hasta N paquetes pendientes de ACKel receptor soacutelo enviacutea ACKs acumulativos
no lo enviacutea para un paquete si hay una laguna
el emisor tiene un temporizador para el paquete maacutes antiguo sin ACK
si llega a 0 retransmitir paquetes sin ACK
Repeticioacuten selectiva vista globalel emisor puede tener hasta N paquetes pendientes de ACKel receptor enviacutea ACK para cada paqueteel emisor mantiene un temporizador para cada paquete sin ACK
si llega a 0 retransmitir soacutelo paquete sin ACK
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-50
Retroceder N (GBN)Emisor
nordm de secuencia de k bits en cabecera del paqueteventana de hasta N paquetes consecutivos sin ACK
ACK(n) ACK para todos los paquetes hasta nordm sec n (inclusive) ldquoACK acumulativordquo
puede recibir ACKs duplicados (ver receptor)temporizador para cada paquete en camino timeout(n) retransmitir paquete n y todos los de mayor nordm sec en la ventanaRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-51
GBN MEF ampliada para el emisor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-52
GBN MEF ampliada del receptor
Enviar ACK para paquete correcto con mayor nordm de secuencia en orden
se pueden generar ACKs duplicadossoacutelo hay que recordar expectedseqnum
paquete fuera de ordendescartar (no se guarda) -gt iexcliexclno hay buffer en el receptorReenviar ACK para paquete con mayor nordm secuencia en orden
Wait
udt_send(sndpkt)default
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(expectedseqnumACKchksum)
Λ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-53
GBN enfunciona-miento
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-54
Repeticioacuten selectiva (SR)
el receptor enviacutea ACK individual para cada paquete correcto
se deben guardar los paquetes en buffers seguacuten sea necesario para entregarlos en orden a la capa superior
el emisor soacutelo reenviacutea paquetes para los que no reciba ACK
un temporizador para cada paquete en caminoventana de emisor
hay N nordm de secuencia consecutivosde nuevo limita nordmsec de los paquetes en camino
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-55
Repeticioacuten selectiva ventanas de emisor y receptor
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-56
Repeticioacuten selectiva
datos de arribasi sig nordm sec en la ventana vaciacuteo enviar paquete
timeout(n)reenviar paquete n reiniciar temporizador
ACK(n) en [sendbasesendbase+N]
marcar paquete n como recibidosi n era el paquete sin ACK con menor nordm sec avanzar el inicio de la ventana al siguiente nordm sec sin ACK
emisorpaquete n en [rcvbase rcvbase+N-1]
enviar ACK(n)fuera de orden guardar en bufferen orden entregar (junto con los previamente guardados por fuera de orden) avanzar ventana al siguiente pendiente de recibir
paquete n en [rcvbase-Nrcvbase-1]
ACK(n)otro caso
ignorar
receptor
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-57
repeticioacuten selectiva en funcionamiento
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-58
Repeticioacuten selectivadilema
Ejemplo nos sec 0 1 2 3tamantildeo ventana=3
iexclel receptor no ve diferencia entre ambos casosen (a) pasa datos repetidos por nuevos de forma incorrecta
P iquestrelacioacuten entre nordm de nos de secuencia vaacutelidos y tamantildeo de la ventanaRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-59
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacuten transferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-60
TCP Visioacuten global RFCs 793 1122 1323 2018 2581
datos full duplexflujo de datos bidireccional en la misma conexioacutenMSS Maacuteximo tamantildeo de segmento (lsquomaximum segment sizersquo)
orientado a conexioacutenestablecimiento conexioacuten (intercambio de mensajes) inicializa estados antes del intercambio de datos
con control de flujoel emisor no satura al receptor
punto a puntoun emisor un receptor
flujo de bytes fiable en orden
no hay ldquoliacutemites de mensajerdquosegmentado
el control de flujo y congestioacuten de TCP fijan el tamantildeo de la ventanabuffers de emisioacuten y recepcioacuten
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-61
estructura del segmento TCP
nordm puerto origen nordm puerto dest
32 bits
datosaplicacioacuten
(long variable)
nordm secuencianordm ACK
ventana recepcioacutenpuntero datos urgchecksum
FSRPAUlong encab
notused
Opciones (long variable)
URG datos urgentes(la aplicacioacuten debe
hacer algo)ACK nordm ACK
vaacutelidoPSH push enviar
estos datos ya a laaplicacioacuten
(el programador no puede manejarlo)
RST SYN FINestab conexioacuten
(comandos estab cerrar)
nordm bytes que el receptorestaacute dispuestoa aceptar
contados en bytes de datos(iexcliexclno segmentos)
checksum Internet
(como en UDP)
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
0 15 16 31
3-62
TCP nuacutems secuencia y ACKsnos secuencia
ldquonordmrdquo flujo de bytes del 1er byte de datos del segmento
ACKsnordm sec del siguiente byte esperado de la otra parteACK acumulativo
P coacutemo se tratan los segmentos fuera de orden
R la especificacioacuten de TCP no lo dice lo que haga el implementador
Host A Host B
Seq=42 ACK=79 data = lsquoCrsquo
Seq=79 ACK=43 data = lsquoCrsquo
Seq=43 ACK=80
Usuarioescribe
lsquoCrsquo
el host enviacuteaACK por ladevolucioacuten
de lsquoCrsquo
el host enviacutea ACK por lsquoCrsquodevuelve lsquoCrsquo
tiempoejemplo sencillo de telnet
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-63
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacutentransferencia de datos fiable control de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-64
TCP gestioacuten de la conexioacutenRecordatorio en TCP emisor y
receptor establecen una ldquoconexioacutenrdquo antes de intercambiar segmentos de datosinicializar variables TCP
nos de secuenciabuffers info de control de flujo (pej RcvWindow)
el cliente inicia la conexioacutenSocket clientSocket = new Socket(rdquonombrehostrdquonumero puerto)
el servidor el cliente contacta con eacutelSocket connectionSocket = welcomeSocketaccept()
Establecimiento en 3 pasos
Paso 1 el cliente envia segmento SYN al servidor
especifica nordm secuencia inicialsin datos
Paso 2 el servidor recibe SYN responde con segmento SYNACK
el servidor crea buffersespecifica el nordm sec inicial del servidor
Paso 3 el cliente recibe SYNACK responde con segmento ACK que puede contener datos
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-65
TCP gestioacuten de la conexioacuten (cont)
Cerrar una conexioacuten
el cliente cierra el socketclientSocketclose()
Paso 1 el sistema terminal del cliente enviacutea el segmento de control TCP FIN al servidor
Paso 2 el servidor recibe FIN responde con ACK Cierra la conexioacuten enviacutea FIN
cliente
FIN
servidor
ACK
ACK
FIN
cerrar
cerrar
cerrado
espe
ra
tem
pori
zada
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-66
TCP gestioacuten de la conexioacuten (cont)
Paso 3 el cliente recibe FIN responde con ACK
entra en ldquoespera temporizadardquo ndashresponderaacute con ACK a los FINs que reciba
Paso 4 el servidor recibe ACK Conexioacuten cerrada
Nota con una pequentildea modificacioacuten puede manejar FINs simultaacuteneos
cliente
FIN
servidor
ACK
ACK
FIN
cerrando
cerrando
cerrada
espe
ra
tem
pori
zada
cerrada
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-67
TCP gestioacuten de la conexioacuten (cont)
ciclo de vidade cliente TCP
ciclo de vidade servidor TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-68
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacutentransferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-69
TCP transferencia de datos fiable
TCP crea servicio rdtsobre el servicio no fiable de IPsegmentos en cadenaacks acumulativosTCP usa un uacutenico temporizador de retransmisioacuten
retransmisiones disparadas por
eventos de temporizador a ceroACKs duplicados
inicialmente considerar emisor TCP simplificado
ignorar ACKs duplicadosignorar control de flujo congestioacuten de flujo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-70
eventos de emisioacuten TCPdatos recibidos de la
aplicacioacutencrear segmento con nordmsecnordm sec es el nordm del 1er byte del segmento dentro del flujo de bytesiniciar temporizador si no lo estaacuteintervalo de expiracioacuten TimeOutInterval
lsquotimeoutrsquo (expiracioacuten)retransmitir segmento que la provocoacutereiniciar temporizador
ACK recibidosi se refiere a segmentos sin ACK previo
actualizar aquellos a los que les falta el ACKiniciar temporizador si hay segmentos pendientes
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-71
emisor TCP (simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (siempre) switch(suceso)
suceso datos recibidos de la aplicacioacuten de capa superiorcrear segmento TCP con nordm sec NextSeqNum if (temporizador no en marcha)
iniciar temporizadorpasar segmento a IP NextSeqNum = NextSeqNum + length(data)
suceso temporizador expiroacuteretransmitir segmento sin ACK con el menor nordm sec iniciar contador
suceso recibido ACK con valor del campo ACK == yif (y gt SendBase)
SendBase = yif (hay segmentos sin ACK)
iniciar temporizador
fin de loop siempre
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-72
TCP situaciones para retransmisioacutenHost A
Seq=100 20 bytes data
ACK=100
tiempotimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq=
92 t
imeo
ut
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
peacuterdida
tim
eout
situacioacuten de ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tiempo
Seq=
92 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
SendBase= 100
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-73
TCP situaciones para retransmisioacuten (maacutes)Host A
Seq=92 8 bytes data
ACK=100
peacuterdida
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
tiempo
SendBase= 120
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-74
generacioacuten de ACK en TCP [RFC 1122 RFC 2581]
Evento en Receptor
Llegada de segmento en orden connordm sec esperado Todos hasta elnordm sec esperado ya tienen ACK
Llegada de segmento en orden connordm sec esperado Hay otro seg en orden esperando transm de ACK
Llegada de nordm de sec fuera de orden mayor que el esperado Detectada laguna
Llegada de segmento que comple-ta parcialmente una laguna
Receptor TCP accioacuten
ACK retardado Esperar hasta 500msal siguiente segmento Si no llega enviarACK
Inmediatamente enviar ACK acumulativopara ambos segmentos
Inmediatamente enviar ACK duplicadoindicando nordm sec del siguiente byte esperado
Inmediatamente enviar ACK suponiendo que el segmento empieza en el liacutemite inferior de la laguna
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-75
Retransmisioacuten raacutepida
periacuteodo de expiracioacuten a menudo relativamente largo
largo retardo antes de reenviar el paquete perdido
se detectan segmentos perdidos por ACKs repetidos
el emisor a menudo enviacutea varios segmentos seguidossi se pierde un segmento seguramente habraacute varios ACKs repetidos
si el emisor recibe 3 ACKs por los mismos datos supone que el segmento de despueacutes de los datos con ACK se perdioacute
retransmisioacuten raacutepida reenviar segmento antes de que expire el temporizador
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-76
Host A
tim
eout
Host B
tiempo
X
reenviar 2ordm segmento
Figura 337 Reenviar segmento tras triple ACKRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-77
suceso recibido ACK con campo ACK con valor == s if (s gt SendBase)
SendBase = sif (hay segmentos pendientes de ACK)
iniciar temporizador
else incrementar cuenta de ACKs duplicados recibidos para s if (cuenta de ACKs duplicados para s == 3)
reenviar segmento con nordm sec s
Algoritmo de retransmisioacuten raacutepida
un ACK duplicado paraun segmento ya con ACK
retransmisioacuten raacutepida
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
Algoritmo de Nagle [RFC896]
Las conexiones interactivas (ssh telnet) suelen enviar segmentos con muy pocos datos (uno dos bytes)
iexclPeacuterdida de eficienciaEs maacutes interesante reunir varios datos procedentes de la aplicacioacuten y mandarlos todos juntosEl algoritmo de Nagle indica que no se enviacuteen nuevos segmentos mientras queden reconocimientos pendientes
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte 3-78
Algoritmo de Nagle [RFC896]
Evento en emisor
Llegada de datos de la aplicacioacutenHay ACKs pendientes
Llegada de un ACK pendiente
Llegada de datos de la aplicacioacutenNo hay ACKs pendientes
Llegada de datos de la aplicacioacutenNo queda sitio en el buffer delemisor
Accioacuten en emisor
Acumular datos en el buffer del emisor
Inmediatamente enviar todos los segmen-tos acumulados en buffer
Inmediatamente enviar datos al receptor
Inmediatamente enviar datos si lo permi-te la ventana aunque no se hayan reci-bido ACKs previos
Capa de Transporte 3-79Rauacutel Duraacuten Nacho Peacuterez v14
3-80
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacutentransferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-81
en TCP el receptor tiene un buffer de recepcioacuten
servicio de equilibrado de velocidad equilibrar la velocidad de enviacuteo a la de la aplicacioacuten vaciando el buffer de recepcioacutenla aplicacioacuten puede ser
lenta leyendo del buffer
el emisor no saturaraacuteel buffer del receptor
a base de enviar mucho muy seguido
control de flujoTCP Control de flujo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-82
TCP control de flujo coacutemo funciona
(suponer que el receptor TCP descarta segmentos fuera de orden)hay sitio en el buffer
RcvWindow = RcvBuffer -[LastByteRcvd - LastByteRead]
el receptor anuncia el espacio libre incluyendo el valor RcvWindow en los segmentosel emisor limita los datos sin ACK a RcvWindow
garantiza que el buffer de recepcioacuten no se desborda
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-83
TCP lsquoRound Trip Timersquo y lsquoTimeoutrsquo
P iquestcoacutemo fijar el tiempo de lsquotimeoutrsquo de TCPmaacutes que RTT
pero RTT variacuteasi demasiado corto lsquotimeoutrsquo prematuro
retransmisiones innecesarias
si demasiado largo reaccioacuten lenta a peacuterdidas
P iquestcoacutemo estimar RTTSampleRTT tiempo medido desde transmisioacuten de un segmento hasta recepcioacuten de ACK
ignorar retransmisionesSampleRTT variaraacute queremos un valor maacutes ldquoestablerdquo
promedio de varias mediciones recientes no el valor actual
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-84
TCP lsquoRound Trip Timersquo y lsquoTimeoutrsquo
EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT
media moacutevil ponderada exponencialla influencia de una muestra pasada decrece exponencialmentevalor tiacutepico α = 0125
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-85
Ejemplo de estimacioacuten de RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106time (seconnds)
RTT
(mill
iseco
nds)
SampleRTT Estimated RTT
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-86
TCP lsquoRound Trip Timersquo y lsquoTimeoutrsquoFijar el tiempo de expiracioacuten (lsquotimeoutrsquo)
EstimatedRTT maacutes ldquomargen de seguridadrdquogran variacioacuten en EstimatedRTT -gt mayor margen de seguridad
primero estimar cuaacutento SampleRTT se desviacutea de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-β)DevRTT +β|SampleRTT-EstimatedRTT|
(tiacutepicamente β = 025)
Entonces fijar el tiempo de expiracioacuten
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
Algoritmo de Karn
Si recibimos el reconocimiento de un paquete retransmitido no tenemos forma de saber a cuaacutel de las retransmisiones corresponde ese reconocimientoPor ello se ignoran los paquetes retransmitidos a la hora de computar el RTTEste procedimiento se denomina algoritmo de Karn
3-87Capa de TransporteRauacutel Duraacuten Nacho Peacuterez v14
3-88
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacuten transferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-89
Principios de control de la congestioacuten
Congestioacuteninformal ldquodemasiadas fuentes enviando demasiados datos demasiado deprisa para que la red lo pueda asimilarrdquoiexcliexcldiferente a control de flujosiacutentomas
paquetes perdidos (desbordamiento de bufferes en los routers)grandes retardos (encolado en los bufferes de los routers)iexcliexclun problema ldquotop-10rdquo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-90
Formas de abordar el control de congestioacuten
control de terminal a terminalno hay realimentacioacuten expliacutecita de la redla congestioacuten se deduce por el retardo y las peacuterdidas observadas por los terminaleseste es el meacutetodo de TCP
control asistido por la redlos routers proporcionan realimentacioacuten a los terminales
un bit que indica la congestioacuten (SNA DECnet TCPIP ECN ATM)indicacioacuten expliacutecita de la tasa a la que el emisor deberiacutea enviar
Dos formas principales de abordarla
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-91
Caso de estudio servicio ABR de las redes ATM
ABR lsquoAvailable Bit Ratersquo(Tasa de bits disponible)
ldquoservicio elaacutesticordquosi la ruta del emisor ldquoinfra-cargadardquo
el emisor deberiacutea usar el ancho de banda disponible
si la ruta del emisor estaacutecongestionada
el emisor se limita a la tasa garantizada
ceacutelulas RM (lsquoresource managementrsquo gestioacuten de recursos) enviado por el emisor intercalado con las celdas de datoslos bits en las celdas RM se rellenan por los switches (ldquoasistido por la redrdquo)
bit NI no hay mejora en la velocidad (congestioacuten suave)bit CI indica congestioacuten
las celdas RM se devuelven al emisor por el receptor sin modificar
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-92
Caso de estudio servicio ABR de las redes ATM
campo ER (lsquoexplicit ratersquo tasa expliacutecita) de 2 bytes en celda RM
un switch congestionado puede rebajar el valor ERla tasa del emisor es asiacute la maacutexima que puede aguantar la ruta
bit EFCI en celdas de datos se pone a 1 en switch congestionado
si la celda que precede a la RM tiene EFCI a 1 el emisor pone a1 el bit CI en la celda RM devueltaRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-93
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacuten transferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-94
control de congestioacuten en TCP incremento aditivo decremento multiplicativo
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
filosofiacutea incrementar la tasa de transmisioacuten (tamantildeo de la ventana) sondeando el ancho de banda accesible hasta que hay peacuterdidas
incremento aditivo incrementar cwnd en 1 MSS cada RTT hasta que haya peacuterdidasdecremento multiplicativo dividir cwnd por 2 cuando las haya
tiempo
cwnd
tam
antildeo
de la
ven
tana
co
n co
nges
tioacuten
diente de sierra sondeo del ancho
de banda
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-95
Control de congestioacuten TCP detalles
el emisor limita la transmisioacutenLastByteSent-LastByteAcked
le cwnd
lsquogrosso modorsquo
cwnd es dinaacutemica funcioacuten de la congestioacuten de la red percibida
iquestCoacutemo percibe el emisor la congestioacutenevento de peacuterdida = expiracioacuten o 3 ACKs duplicadosel emisor reduce la tasa (cwnd) tras un evento de peacuterdida
3 mecanismosAIMDarranque lentoconservador tras eventos de expiracioacuten
tasa = cwndRTT Bytess
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-96
TCP Arranque lento
cuando se inicia la conexioacuten la tasa se incrementa exponencialmente hasta la primera peacuterdida
inicialmente cwnd = 1 MSScwnd se dobla cada RTTse incrementa cwnd con cada ACK recibido
resumen la tasa inicial es baja pero crece exponencialmente raacutepido
Host A
un segmento
RTT
Host B
tiempo
2 segmentos
4 segmentos
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-97
Refinado deduccioacuten de peacuterdidastras 3 ACKs duplicados
cwnd se divide por 2la ventana ya crece linealmente
pero tras una expiracioacutencwnd en cambio se pone a 1 MSS la ventana entonces crece exponencialmentehasta un umbral luego linealmente
3 ACKs duplicados indica que la red es capaz de entregar algunos segmentos
expiracioacuten indica una situacioacuten de congestioacuten ldquomaacutes alarmanterdquo
Filosofiacutea
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-98
RefinadoP iquestcuaacutendo deberiacutea
pasarse de incremento exponencial a lineal
R cuando cwnd llegue a 12 de su valor antes de la expiracioacuten
Implementacioacutenvariable ssthreshcon una peacuterdida ssthreshse pone a 12 de cwndjusto antes de la peacuterdida
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-99
Resumen Control de congestioacuten TCP
expiracioacutenssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmitir segmento que falta
Λcwnd gt ssthresh
evitacioacuten decongestion
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmitir nuevo(s) segmento(s) seguacuten se pueda
ACK nuevo
dupACKcount++ACK duplicado
recuperacioacuten raacutepida
cwnd = cwnd + MSStransmitir nuevo(s) segmento(s) seguacuten se pueda
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmitir segmento que falta
dupACKcount == 3
expiracioacutenssthresh = cwnd2
cwnd = 1 dupACKcount = 0
retransmitir segmento que faltassthresh= cwnd2
cwnd = ssthresh + 3retransmitir segmento que falta
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
ACK nuevo
arranque lento
expiracioacutenssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmitir segmento que falta
cwnd = cwnd+MSSdupACKcount = 0transmitir nuevo(s) segmento(s) seguacuten se pueda
ACK nuevodupACKcount++ACK duplicado
Λcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NewACK
NewACK
NewACK
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-100
eficiencia de TCP
iquestcuaacutel es la tasa media de TCP en funcioacuten del tamantildeo de ventana y RTT
ignorar el arranque raacutepidosea W el tamantildeo de la ventana cuando ocurre una peacuterdida
cuando la ventana es W la tasa es WRTTjusto tras la peacuterdida la ventana pasa a W2 y la tasa a W2RTTla tasa media es 075 WRTT
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-101
Futuros de TCP TCP sobre ldquotubos largos y gruesosrdquo
ejemplo segmentos de 1500 bytes RTT 100ms se quiere tasa de 10 Gbps requiere tamantildeo de ventana W = 83333 segmentos en traacutensitotasa de transferencia en funcioacuten de la tasa de peacuterdidas
L = 210-10 iexcliexcluna tasa de peacuterdidas muy bajanuevas versiones de TCP para alta velocidad
LRTTMSSsdot221
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-102
objetivo de equidad si K sesiones TCP comparten el mismo enlace cuello de botella de ancho de banda R cada uno deberiacutea tener una tasa media de RK
conexioacuten TCP 1
router cuello de botella
capacidad Rconexioacuten TCP 2
Equidad en TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-103
iquestPor queacute es equitativoTCP2 sesiones que compiten
el incremento aditivo da una pendiente de 1 en los incrementosel decremento multiplicativo decrementa la tasa proporcionalmente
R
R
reparto equitativo del ancho de banda
tasa de transferencia
de la conexioacuten 1
tasa
de
tran
sfer
enc i
a
de la
con
exioacute
n 2
evitacioacuten de congestioacuten incremento aditivopeacuterdida decrementar ventana en un factor de 2evitacioacuten de congestioacuten incremento aditivo
peacuterdida decrementar ventana en un factor de 2
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-104
Equidad (maacutes)Equidad y UDP
las aplicaciones multimedia a menudo no usan TCP
no quieren que la tasa de transf se limite por el control de congestioacuten
por eso usan UDPenviacutean audiovideo a tasa constante toleran peacuterdida de paquetes
Equidad y conexiones TCP paralelasnada impide a una aplicacioacuten abrir conexiones paralelas entre 2 hostslos navegadores lo hacenejemplo enlace de tasa R permite 9 conexiones
una aplicacioacuten pide 1 TCP obtiene tasa R10una aplicacioacuten pide 11 TCPs iexcliexclobtiene tasa R2
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-105
Capiacutetulo 3 Resumenprincipios detraacutes de los servicios de la capa de transporte
multiplexacioacuten desmultiplexacioacutentransferencia de datos fiablecontrol de flujocontrol de congestioacuten
instanciacioacuten e implementacioacuten en Internet
UDPTCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-25
Principios de transferencia de datos fiable
es importante en las capas de aplicacioacuten transporte y enlaceiexclen el ldquotop-10rdquo de las cuestiones importantes en redes
las caracteriacutesticas del canal no fiable determinaraacuten la complejidad del protocolo de transferencia de datos fiable (rdt lsquoreliable data transfer protocolrsquo)
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-26
Principios de transferencia de datos fiable
es importante en las capas de aplicacioacuten transporte y enlaceiexclen el ldquotop-10rdquo de las cuestiones importantes en redes
las caracteriacutesticas del canal no fiable determinaraacuten la complejidad del protocolo de transferencia de datos fiable (rdt lsquoreliable data transfer protocolrsquo)
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
rdt_send() llamada desde arriba (pej por la apl) Se le
pasan los datos a entregar al nivel superior del receptor
3-27
transferencia de datos fiable preliminares
ladoemisioacuten
ladorecepcioacuten
udt_send() llamado por rdt para transferir paquete por canal no fiable al receptor
rdt_rcv() llamado cuando el paquete llegue al extremo de
recepcioacuten del canal
deliver_data() llamada por rdt para entregar datos
al nivel superior
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-28
transferencia de datos fiable preliminaresVamos a
desarrollar el emisor y el receptor de un protocolo de transf de datos fiable (rdt) paso a pasoconsiderar soacutelo transferencia de datos unidireccional
iexclpero el control se transmitiraacute en ambas direccionesusar maacutequinas de estados finitos (MEFs) para definir emisor y receptor
estado1
estado2
evento que causa la transicioacutenaccioacuten tomada en la transicioacuten
estado desde este estado el siguiente
se determina uacutenicamente por el
siguiente evento
eventoacciones
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-29
Rdt10 transferencia fiable en canal fiable
canal subyacente perfectamente fiableno hay errores de bitno hay peacuterdida de paquetes
MEF diferente para emisor y receptorel emisor enviacutea dato al canal subyacenteel emisor lee datos del canal subyacente
esperarllamada de arriba packet = make_pkt(data)
udt_send(packet)
rdt_send(data)extract (packetdata)deliver_data(data)
esperar llamada de abajo
rdt_rcv(packet)
emisor receptor
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-30
Rdt20 canal con errores de bitel canal subyacente puede alterar bits del paquete
usar el checksum para detectar errores de bitla cuestioacuten iquestcoacutemo recuperarse de erroresreconocimientos(lsquoacknowledgementsrsquo ACKs) el receptor indica expliacutecitamente que la recepcioacuten fue buenareconocimientos negativos (NAKs) el receptor indica expliacutecitamente que el paquete teniacutea erroresel emisor retransmite el paquete si recibe un NAK
nuevos mecanismos en rdt20 (sobre rdt10)deteccioacuten de erroresrealimentacioacuten del receptormensajes de control (ACKNAK) del receptor al emisor
iquestCoacutemo se recuperan los humanos de ldquoerroresrdquodurante la conversacioacuten
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-31
Rdt20 canal con errores de bitel canal subyacente puede alterar bits del paquete
usar el checksum para detectar errores de bitla cuestioacuten iquestcoacutemo recuperarse de erroresreconocimientos(lsquoacknowledgementsrsquo ACKs) el receptor indica expliacutecitamente que la recepcioacuten fue buenareconocimientos negativos (NAKs) el receptor indica expliacutecitamente que el paquete teniacutea erroresel emisor retransmite el paquete si recibe un NAK
nuevos mecanismos en rdt20 (sobre rdt10)deteccioacuten de erroresrealimentacioacuten del receptormensajes de control (ACKNAK) del receptor al emisor
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-32
rdt20 especificacioacuten de la MEF
esperar llamada de
arriba
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
esperar ACK o NAK
esperar llamada de
abajoemisor
receptorrdt_send(data)
Λ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-33
rdt20 funcionamiento sin errores
esperar llamada de
arriba
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
esperar ACK o NAK
esperar llamada de
abajo
rdt_send(data)
Λ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-34
rdt20 caso de error
esperar llamada de
arriba
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
esperar ACK o NAK
esperar llamada de
abajo
rdt_send(data)
Λ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-35
iexcl rdt20 tiene un defecto fatal
iquestQueacute ocurre si ACK o NAK se corrompeniexcliexclel emisor no sabe queacuteocurrioacute en el receptorno es posible simplemente retransmitir se pueden crear duplicados
Manejo de duplicados el emisor retransmite el paquete actual si ACK o NAK no llegan bienel emisor antildeade un nuacutemero de secuencia a cada paqueteel receptor descarta (no entrega hacia arriba) el paquete duplicado
el emisor enviacutea un paquetey espera la respuesta delreceptor
parada y espera
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-36
rdt21 el emisor maneja ACKNAKs erroacuteneos
esperar llamada 0 de arriba
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
esperar ACK o NAK 0 udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isNAK(rcvpkt) )
sndpkt = make_pkt(1 data checksum)udt_send(sndpkt)
rdt_send(data)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isNAK(rcvpkt) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt)
esperar llamada 1 de arriba
esperar ACK o NAK 1
ΛΛ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-37
rdt21 el receptor maneja ACKNAKs erroacuteneos
esperar 0 de abajo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
esperar 1 de abajo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-38
rdt21 discusioacuten
Emisornordm secuencia antildeadido al paquete2 nuacutemeros valen (01) iquestPor queacutecomprobar si el ACKNAK recibido corruptoel doble de estados
el estado debe ldquorecordarrdquo si el paquete ldquoactualrdquo tiene nordm sec 0 oacute1
Receptordebe comprobar si el paquete recibido es duplicado
el estado indica si se espera el paquete 0 oacute 1
nota el receptor no puede saber si su uacuteltimo ACKNAK se recibioacute bien en el emisor
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-39
rdt22 un protocolo sin NAK
la misma funcionalidad que rdt21 usando soacutelo ACKsen lugar de NAK el receptor enviacutea ACK para el uacuteltimo paquete recibido bien
el receptor debe incluir expliacutecitamente el nordm de secuencia del paquete al que se refiere el ACK
un ACK duplicado en el emisor resulta en la misma accioacuten que un NAK retransmitir paquete actual
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-40
rdt22 fragmentos del emisor y el receptor
esperar llamada 0 de arriba
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
esperar ACK 0
fragmento MEF emisor
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
esperar 0 de abajo
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)fragmento MEF
receptor
Λ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-41
rdt30 canales con errores y peacuterdidas
Nueva suposicioacuten canal subyacente tambieacuten puede perder paquetes (datos o ACKs)
las retransmisiones de checksum nordm secuencia ACKs ayudan pero no son suficiente
liacutenea de trabajo emisor espera un tiempo ldquorazonablerdquo al ACKretransmite si no recibe ACK en ese tiemposi el paquete (o ACK) soacutelo se retrasoacute (no se perdioacute)
las retransmisiones estaraacuten repetidas pero con el nordm secuencia esto estaacute resueltoel receptor debe indicar nordm secuencia del paquete al que se aplica el ACK
requiere un temporizadorRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-42
rdt30 emisorsndpkt = make_pkt(0 data checksum)udt_send(sndpkt)start_timer
rdt_send(data)
espe-rar
ACK 0
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt1) )
esperar llamada 1 de arriba
sndpkt = make_pkt(1 data checksum)udt_send(sndpkt)start_timer
rdt_send(data)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt0) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)
stop_timerstop_timer
udt_send(sndpkt)start_timer
timeout
udt_send(sndpkt)start_timer
timeout
rdt_rcv(rcvpkt)
esperar llamada 0 de arriba
esper-rar
ACK 1
Λrdt_rcv(rcvpkt)
ΛΛ
Λ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-43
rdt30 funcionando
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-44
rdt30 funcionando
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-45
Rendimiento del rdt30
rdt30 funciona pero el rendimiento es muy malopej enlace de 1Gbs 15ms retardo prop paquete 8k bits
si RTT=30 ms 1 paquete de 1KB cada 30 sg -gt 33KBs de 1Gbpsiexcliexclel protocolo de red limita el uso de los recursos fiacutesicos
dosmicrosegun 8bps10bits 8000
9 ===RLdtrans
U emisor utilizacioacuten ndash fraccioacuten de tiempo que el emisor estaacuteocupado emitiendo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-46
rdt30 funcionamiento de parada y espera
primer bit transmitido t = 0
emisor receptor
RTT
uacuteltimo bit transmitido t = L R
llega primer bitllega uacuteltimo bit enviar ACK
llega ACK enviar siguiente paquete t = RTT + L R
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-47
Protocolos segmentados (en cadena)segmentar el emisor permite que haya muacuteltiples
paquetes ldquoen caminordquo pendientes de ACKel rango de nordm de secuencia debe aumentarsehay que antildeadir buacutefferes en el emisor yo el receptor
hay dos formas geneacutericas de protocolos segmentados retroceder N (lsquogo-Back-Nrsquo) y repeticioacuten selectiva (lsquoselective repeatrsquo)
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-48
segmentacioacuten uso mejorado
primer bit transmitido t = 0
emisor receptor
RTT
uacuteltimo bit transmitido t = L R
llega el primer bitllega uacuteltimo bit 1er paquete enviar ACK
llega ACK enviar siguiente paquete t = RTT + L R
llega uacuteltimo bit 2ordm paquete enviar ACKllega uacuteltimo bit 3er paquete enviar ACK
iexcliexclMejora en la utilizacioacuten en un factor de 3
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-49
Protocolos segmentados
Retroceder N vista globalel emisor puede tener hasta N paquetes pendientes de ACKel receptor soacutelo enviacutea ACKs acumulativos
no lo enviacutea para un paquete si hay una laguna
el emisor tiene un temporizador para el paquete maacutes antiguo sin ACK
si llega a 0 retransmitir paquetes sin ACK
Repeticioacuten selectiva vista globalel emisor puede tener hasta N paquetes pendientes de ACKel receptor enviacutea ACK para cada paqueteel emisor mantiene un temporizador para cada paquete sin ACK
si llega a 0 retransmitir soacutelo paquete sin ACK
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-50
Retroceder N (GBN)Emisor
nordm de secuencia de k bits en cabecera del paqueteventana de hasta N paquetes consecutivos sin ACK
ACK(n) ACK para todos los paquetes hasta nordm sec n (inclusive) ldquoACK acumulativordquo
puede recibir ACKs duplicados (ver receptor)temporizador para cada paquete en camino timeout(n) retransmitir paquete n y todos los de mayor nordm sec en la ventanaRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-51
GBN MEF ampliada para el emisor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-52
GBN MEF ampliada del receptor
Enviar ACK para paquete correcto con mayor nordm de secuencia en orden
se pueden generar ACKs duplicadossoacutelo hay que recordar expectedseqnum
paquete fuera de ordendescartar (no se guarda) -gt iexcliexclno hay buffer en el receptorReenviar ACK para paquete con mayor nordm secuencia en orden
Wait
udt_send(sndpkt)default
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(expectedseqnumACKchksum)
Λ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-53
GBN enfunciona-miento
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-54
Repeticioacuten selectiva (SR)
el receptor enviacutea ACK individual para cada paquete correcto
se deben guardar los paquetes en buffers seguacuten sea necesario para entregarlos en orden a la capa superior
el emisor soacutelo reenviacutea paquetes para los que no reciba ACK
un temporizador para cada paquete en caminoventana de emisor
hay N nordm de secuencia consecutivosde nuevo limita nordmsec de los paquetes en camino
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-55
Repeticioacuten selectiva ventanas de emisor y receptor
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-56
Repeticioacuten selectiva
datos de arribasi sig nordm sec en la ventana vaciacuteo enviar paquete
timeout(n)reenviar paquete n reiniciar temporizador
ACK(n) en [sendbasesendbase+N]
marcar paquete n como recibidosi n era el paquete sin ACK con menor nordm sec avanzar el inicio de la ventana al siguiente nordm sec sin ACK
emisorpaquete n en [rcvbase rcvbase+N-1]
enviar ACK(n)fuera de orden guardar en bufferen orden entregar (junto con los previamente guardados por fuera de orden) avanzar ventana al siguiente pendiente de recibir
paquete n en [rcvbase-Nrcvbase-1]
ACK(n)otro caso
ignorar
receptor
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-57
repeticioacuten selectiva en funcionamiento
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-58
Repeticioacuten selectivadilema
Ejemplo nos sec 0 1 2 3tamantildeo ventana=3
iexclel receptor no ve diferencia entre ambos casosen (a) pasa datos repetidos por nuevos de forma incorrecta
P iquestrelacioacuten entre nordm de nos de secuencia vaacutelidos y tamantildeo de la ventanaRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-59
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacuten transferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-60
TCP Visioacuten global RFCs 793 1122 1323 2018 2581
datos full duplexflujo de datos bidireccional en la misma conexioacutenMSS Maacuteximo tamantildeo de segmento (lsquomaximum segment sizersquo)
orientado a conexioacutenestablecimiento conexioacuten (intercambio de mensajes) inicializa estados antes del intercambio de datos
con control de flujoel emisor no satura al receptor
punto a puntoun emisor un receptor
flujo de bytes fiable en orden
no hay ldquoliacutemites de mensajerdquosegmentado
el control de flujo y congestioacuten de TCP fijan el tamantildeo de la ventanabuffers de emisioacuten y recepcioacuten
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-61
estructura del segmento TCP
nordm puerto origen nordm puerto dest
32 bits
datosaplicacioacuten
(long variable)
nordm secuencianordm ACK
ventana recepcioacutenpuntero datos urgchecksum
FSRPAUlong encab
notused
Opciones (long variable)
URG datos urgentes(la aplicacioacuten debe
hacer algo)ACK nordm ACK
vaacutelidoPSH push enviar
estos datos ya a laaplicacioacuten
(el programador no puede manejarlo)
RST SYN FINestab conexioacuten
(comandos estab cerrar)
nordm bytes que el receptorestaacute dispuestoa aceptar
contados en bytes de datos(iexcliexclno segmentos)
checksum Internet
(como en UDP)
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
0 15 16 31
3-62
TCP nuacutems secuencia y ACKsnos secuencia
ldquonordmrdquo flujo de bytes del 1er byte de datos del segmento
ACKsnordm sec del siguiente byte esperado de la otra parteACK acumulativo
P coacutemo se tratan los segmentos fuera de orden
R la especificacioacuten de TCP no lo dice lo que haga el implementador
Host A Host B
Seq=42 ACK=79 data = lsquoCrsquo
Seq=79 ACK=43 data = lsquoCrsquo
Seq=43 ACK=80
Usuarioescribe
lsquoCrsquo
el host enviacuteaACK por ladevolucioacuten
de lsquoCrsquo
el host enviacutea ACK por lsquoCrsquodevuelve lsquoCrsquo
tiempoejemplo sencillo de telnet
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-63
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacutentransferencia de datos fiable control de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-64
TCP gestioacuten de la conexioacutenRecordatorio en TCP emisor y
receptor establecen una ldquoconexioacutenrdquo antes de intercambiar segmentos de datosinicializar variables TCP
nos de secuenciabuffers info de control de flujo (pej RcvWindow)
el cliente inicia la conexioacutenSocket clientSocket = new Socket(rdquonombrehostrdquonumero puerto)
el servidor el cliente contacta con eacutelSocket connectionSocket = welcomeSocketaccept()
Establecimiento en 3 pasos
Paso 1 el cliente envia segmento SYN al servidor
especifica nordm secuencia inicialsin datos
Paso 2 el servidor recibe SYN responde con segmento SYNACK
el servidor crea buffersespecifica el nordm sec inicial del servidor
Paso 3 el cliente recibe SYNACK responde con segmento ACK que puede contener datos
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-65
TCP gestioacuten de la conexioacuten (cont)
Cerrar una conexioacuten
el cliente cierra el socketclientSocketclose()
Paso 1 el sistema terminal del cliente enviacutea el segmento de control TCP FIN al servidor
Paso 2 el servidor recibe FIN responde con ACK Cierra la conexioacuten enviacutea FIN
cliente
FIN
servidor
ACK
ACK
FIN
cerrar
cerrar
cerrado
espe
ra
tem
pori
zada
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-66
TCP gestioacuten de la conexioacuten (cont)
Paso 3 el cliente recibe FIN responde con ACK
entra en ldquoespera temporizadardquo ndashresponderaacute con ACK a los FINs que reciba
Paso 4 el servidor recibe ACK Conexioacuten cerrada
Nota con una pequentildea modificacioacuten puede manejar FINs simultaacuteneos
cliente
FIN
servidor
ACK
ACK
FIN
cerrando
cerrando
cerrada
espe
ra
tem
pori
zada
cerrada
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-67
TCP gestioacuten de la conexioacuten (cont)
ciclo de vidade cliente TCP
ciclo de vidade servidor TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-68
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacutentransferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-69
TCP transferencia de datos fiable
TCP crea servicio rdtsobre el servicio no fiable de IPsegmentos en cadenaacks acumulativosTCP usa un uacutenico temporizador de retransmisioacuten
retransmisiones disparadas por
eventos de temporizador a ceroACKs duplicados
inicialmente considerar emisor TCP simplificado
ignorar ACKs duplicadosignorar control de flujo congestioacuten de flujo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-70
eventos de emisioacuten TCPdatos recibidos de la
aplicacioacutencrear segmento con nordmsecnordm sec es el nordm del 1er byte del segmento dentro del flujo de bytesiniciar temporizador si no lo estaacuteintervalo de expiracioacuten TimeOutInterval
lsquotimeoutrsquo (expiracioacuten)retransmitir segmento que la provocoacutereiniciar temporizador
ACK recibidosi se refiere a segmentos sin ACK previo
actualizar aquellos a los que les falta el ACKiniciar temporizador si hay segmentos pendientes
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-71
emisor TCP (simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (siempre) switch(suceso)
suceso datos recibidos de la aplicacioacuten de capa superiorcrear segmento TCP con nordm sec NextSeqNum if (temporizador no en marcha)
iniciar temporizadorpasar segmento a IP NextSeqNum = NextSeqNum + length(data)
suceso temporizador expiroacuteretransmitir segmento sin ACK con el menor nordm sec iniciar contador
suceso recibido ACK con valor del campo ACK == yif (y gt SendBase)
SendBase = yif (hay segmentos sin ACK)
iniciar temporizador
fin de loop siempre
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-72
TCP situaciones para retransmisioacutenHost A
Seq=100 20 bytes data
ACK=100
tiempotimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq=
92 t
imeo
ut
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
peacuterdida
tim
eout
situacioacuten de ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tiempo
Seq=
92 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
SendBase= 100
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-73
TCP situaciones para retransmisioacuten (maacutes)Host A
Seq=92 8 bytes data
ACK=100
peacuterdida
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
tiempo
SendBase= 120
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-74
generacioacuten de ACK en TCP [RFC 1122 RFC 2581]
Evento en Receptor
Llegada de segmento en orden connordm sec esperado Todos hasta elnordm sec esperado ya tienen ACK
Llegada de segmento en orden connordm sec esperado Hay otro seg en orden esperando transm de ACK
Llegada de nordm de sec fuera de orden mayor que el esperado Detectada laguna
Llegada de segmento que comple-ta parcialmente una laguna
Receptor TCP accioacuten
ACK retardado Esperar hasta 500msal siguiente segmento Si no llega enviarACK
Inmediatamente enviar ACK acumulativopara ambos segmentos
Inmediatamente enviar ACK duplicadoindicando nordm sec del siguiente byte esperado
Inmediatamente enviar ACK suponiendo que el segmento empieza en el liacutemite inferior de la laguna
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-75
Retransmisioacuten raacutepida
periacuteodo de expiracioacuten a menudo relativamente largo
largo retardo antes de reenviar el paquete perdido
se detectan segmentos perdidos por ACKs repetidos
el emisor a menudo enviacutea varios segmentos seguidossi se pierde un segmento seguramente habraacute varios ACKs repetidos
si el emisor recibe 3 ACKs por los mismos datos supone que el segmento de despueacutes de los datos con ACK se perdioacute
retransmisioacuten raacutepida reenviar segmento antes de que expire el temporizador
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-76
Host A
tim
eout
Host B
tiempo
X
reenviar 2ordm segmento
Figura 337 Reenviar segmento tras triple ACKRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-77
suceso recibido ACK con campo ACK con valor == s if (s gt SendBase)
SendBase = sif (hay segmentos pendientes de ACK)
iniciar temporizador
else incrementar cuenta de ACKs duplicados recibidos para s if (cuenta de ACKs duplicados para s == 3)
reenviar segmento con nordm sec s
Algoritmo de retransmisioacuten raacutepida
un ACK duplicado paraun segmento ya con ACK
retransmisioacuten raacutepida
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
Algoritmo de Nagle [RFC896]
Las conexiones interactivas (ssh telnet) suelen enviar segmentos con muy pocos datos (uno dos bytes)
iexclPeacuterdida de eficienciaEs maacutes interesante reunir varios datos procedentes de la aplicacioacuten y mandarlos todos juntosEl algoritmo de Nagle indica que no se enviacuteen nuevos segmentos mientras queden reconocimientos pendientes
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte 3-78
Algoritmo de Nagle [RFC896]
Evento en emisor
Llegada de datos de la aplicacioacutenHay ACKs pendientes
Llegada de un ACK pendiente
Llegada de datos de la aplicacioacutenNo hay ACKs pendientes
Llegada de datos de la aplicacioacutenNo queda sitio en el buffer delemisor
Accioacuten en emisor
Acumular datos en el buffer del emisor
Inmediatamente enviar todos los segmen-tos acumulados en buffer
Inmediatamente enviar datos al receptor
Inmediatamente enviar datos si lo permi-te la ventana aunque no se hayan reci-bido ACKs previos
Capa de Transporte 3-79Rauacutel Duraacuten Nacho Peacuterez v14
3-80
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacutentransferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-81
en TCP el receptor tiene un buffer de recepcioacuten
servicio de equilibrado de velocidad equilibrar la velocidad de enviacuteo a la de la aplicacioacuten vaciando el buffer de recepcioacutenla aplicacioacuten puede ser
lenta leyendo del buffer
el emisor no saturaraacuteel buffer del receptor
a base de enviar mucho muy seguido
control de flujoTCP Control de flujo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-82
TCP control de flujo coacutemo funciona
(suponer que el receptor TCP descarta segmentos fuera de orden)hay sitio en el buffer
RcvWindow = RcvBuffer -[LastByteRcvd - LastByteRead]
el receptor anuncia el espacio libre incluyendo el valor RcvWindow en los segmentosel emisor limita los datos sin ACK a RcvWindow
garantiza que el buffer de recepcioacuten no se desborda
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-83
TCP lsquoRound Trip Timersquo y lsquoTimeoutrsquo
P iquestcoacutemo fijar el tiempo de lsquotimeoutrsquo de TCPmaacutes que RTT
pero RTT variacuteasi demasiado corto lsquotimeoutrsquo prematuro
retransmisiones innecesarias
si demasiado largo reaccioacuten lenta a peacuterdidas
P iquestcoacutemo estimar RTTSampleRTT tiempo medido desde transmisioacuten de un segmento hasta recepcioacuten de ACK
ignorar retransmisionesSampleRTT variaraacute queremos un valor maacutes ldquoestablerdquo
promedio de varias mediciones recientes no el valor actual
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-84
TCP lsquoRound Trip Timersquo y lsquoTimeoutrsquo
EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT
media moacutevil ponderada exponencialla influencia de una muestra pasada decrece exponencialmentevalor tiacutepico α = 0125
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-85
Ejemplo de estimacioacuten de RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106time (seconnds)
RTT
(mill
iseco
nds)
SampleRTT Estimated RTT
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-86
TCP lsquoRound Trip Timersquo y lsquoTimeoutrsquoFijar el tiempo de expiracioacuten (lsquotimeoutrsquo)
EstimatedRTT maacutes ldquomargen de seguridadrdquogran variacioacuten en EstimatedRTT -gt mayor margen de seguridad
primero estimar cuaacutento SampleRTT se desviacutea de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-β)DevRTT +β|SampleRTT-EstimatedRTT|
(tiacutepicamente β = 025)
Entonces fijar el tiempo de expiracioacuten
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
Algoritmo de Karn
Si recibimos el reconocimiento de un paquete retransmitido no tenemos forma de saber a cuaacutel de las retransmisiones corresponde ese reconocimientoPor ello se ignoran los paquetes retransmitidos a la hora de computar el RTTEste procedimiento se denomina algoritmo de Karn
3-87Capa de TransporteRauacutel Duraacuten Nacho Peacuterez v14
3-88
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacuten transferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-89
Principios de control de la congestioacuten
Congestioacuteninformal ldquodemasiadas fuentes enviando demasiados datos demasiado deprisa para que la red lo pueda asimilarrdquoiexcliexcldiferente a control de flujosiacutentomas
paquetes perdidos (desbordamiento de bufferes en los routers)grandes retardos (encolado en los bufferes de los routers)iexcliexclun problema ldquotop-10rdquo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-90
Formas de abordar el control de congestioacuten
control de terminal a terminalno hay realimentacioacuten expliacutecita de la redla congestioacuten se deduce por el retardo y las peacuterdidas observadas por los terminaleseste es el meacutetodo de TCP
control asistido por la redlos routers proporcionan realimentacioacuten a los terminales
un bit que indica la congestioacuten (SNA DECnet TCPIP ECN ATM)indicacioacuten expliacutecita de la tasa a la que el emisor deberiacutea enviar
Dos formas principales de abordarla
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-91
Caso de estudio servicio ABR de las redes ATM
ABR lsquoAvailable Bit Ratersquo(Tasa de bits disponible)
ldquoservicio elaacutesticordquosi la ruta del emisor ldquoinfra-cargadardquo
el emisor deberiacutea usar el ancho de banda disponible
si la ruta del emisor estaacutecongestionada
el emisor se limita a la tasa garantizada
ceacutelulas RM (lsquoresource managementrsquo gestioacuten de recursos) enviado por el emisor intercalado con las celdas de datoslos bits en las celdas RM se rellenan por los switches (ldquoasistido por la redrdquo)
bit NI no hay mejora en la velocidad (congestioacuten suave)bit CI indica congestioacuten
las celdas RM se devuelven al emisor por el receptor sin modificar
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-92
Caso de estudio servicio ABR de las redes ATM
campo ER (lsquoexplicit ratersquo tasa expliacutecita) de 2 bytes en celda RM
un switch congestionado puede rebajar el valor ERla tasa del emisor es asiacute la maacutexima que puede aguantar la ruta
bit EFCI en celdas de datos se pone a 1 en switch congestionado
si la celda que precede a la RM tiene EFCI a 1 el emisor pone a1 el bit CI en la celda RM devueltaRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-93
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacuten transferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-94
control de congestioacuten en TCP incremento aditivo decremento multiplicativo
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
filosofiacutea incrementar la tasa de transmisioacuten (tamantildeo de la ventana) sondeando el ancho de banda accesible hasta que hay peacuterdidas
incremento aditivo incrementar cwnd en 1 MSS cada RTT hasta que haya peacuterdidasdecremento multiplicativo dividir cwnd por 2 cuando las haya
tiempo
cwnd
tam
antildeo
de la
ven
tana
co
n co
nges
tioacuten
diente de sierra sondeo del ancho
de banda
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-95
Control de congestioacuten TCP detalles
el emisor limita la transmisioacutenLastByteSent-LastByteAcked
le cwnd
lsquogrosso modorsquo
cwnd es dinaacutemica funcioacuten de la congestioacuten de la red percibida
iquestCoacutemo percibe el emisor la congestioacutenevento de peacuterdida = expiracioacuten o 3 ACKs duplicadosel emisor reduce la tasa (cwnd) tras un evento de peacuterdida
3 mecanismosAIMDarranque lentoconservador tras eventos de expiracioacuten
tasa = cwndRTT Bytess
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-96
TCP Arranque lento
cuando se inicia la conexioacuten la tasa se incrementa exponencialmente hasta la primera peacuterdida
inicialmente cwnd = 1 MSScwnd se dobla cada RTTse incrementa cwnd con cada ACK recibido
resumen la tasa inicial es baja pero crece exponencialmente raacutepido
Host A
un segmento
RTT
Host B
tiempo
2 segmentos
4 segmentos
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-97
Refinado deduccioacuten de peacuterdidastras 3 ACKs duplicados
cwnd se divide por 2la ventana ya crece linealmente
pero tras una expiracioacutencwnd en cambio se pone a 1 MSS la ventana entonces crece exponencialmentehasta un umbral luego linealmente
3 ACKs duplicados indica que la red es capaz de entregar algunos segmentos
expiracioacuten indica una situacioacuten de congestioacuten ldquomaacutes alarmanterdquo
Filosofiacutea
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-98
RefinadoP iquestcuaacutendo deberiacutea
pasarse de incremento exponencial a lineal
R cuando cwnd llegue a 12 de su valor antes de la expiracioacuten
Implementacioacutenvariable ssthreshcon una peacuterdida ssthreshse pone a 12 de cwndjusto antes de la peacuterdida
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-99
Resumen Control de congestioacuten TCP
expiracioacutenssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmitir segmento que falta
Λcwnd gt ssthresh
evitacioacuten decongestion
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmitir nuevo(s) segmento(s) seguacuten se pueda
ACK nuevo
dupACKcount++ACK duplicado
recuperacioacuten raacutepida
cwnd = cwnd + MSStransmitir nuevo(s) segmento(s) seguacuten se pueda
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmitir segmento que falta
dupACKcount == 3
expiracioacutenssthresh = cwnd2
cwnd = 1 dupACKcount = 0
retransmitir segmento que faltassthresh= cwnd2
cwnd = ssthresh + 3retransmitir segmento que falta
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
ACK nuevo
arranque lento
expiracioacutenssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmitir segmento que falta
cwnd = cwnd+MSSdupACKcount = 0transmitir nuevo(s) segmento(s) seguacuten se pueda
ACK nuevodupACKcount++ACK duplicado
Λcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NewACK
NewACK
NewACK
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-100
eficiencia de TCP
iquestcuaacutel es la tasa media de TCP en funcioacuten del tamantildeo de ventana y RTT
ignorar el arranque raacutepidosea W el tamantildeo de la ventana cuando ocurre una peacuterdida
cuando la ventana es W la tasa es WRTTjusto tras la peacuterdida la ventana pasa a W2 y la tasa a W2RTTla tasa media es 075 WRTT
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-101
Futuros de TCP TCP sobre ldquotubos largos y gruesosrdquo
ejemplo segmentos de 1500 bytes RTT 100ms se quiere tasa de 10 Gbps requiere tamantildeo de ventana W = 83333 segmentos en traacutensitotasa de transferencia en funcioacuten de la tasa de peacuterdidas
L = 210-10 iexcliexcluna tasa de peacuterdidas muy bajanuevas versiones de TCP para alta velocidad
LRTTMSSsdot221
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-102
objetivo de equidad si K sesiones TCP comparten el mismo enlace cuello de botella de ancho de banda R cada uno deberiacutea tener una tasa media de RK
conexioacuten TCP 1
router cuello de botella
capacidad Rconexioacuten TCP 2
Equidad en TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-103
iquestPor queacute es equitativoTCP2 sesiones que compiten
el incremento aditivo da una pendiente de 1 en los incrementosel decremento multiplicativo decrementa la tasa proporcionalmente
R
R
reparto equitativo del ancho de banda
tasa de transferencia
de la conexioacuten 1
tasa
de
tran
sfer
enc i
a
de la
con
exioacute
n 2
evitacioacuten de congestioacuten incremento aditivopeacuterdida decrementar ventana en un factor de 2evitacioacuten de congestioacuten incremento aditivo
peacuterdida decrementar ventana en un factor de 2
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-104
Equidad (maacutes)Equidad y UDP
las aplicaciones multimedia a menudo no usan TCP
no quieren que la tasa de transf se limite por el control de congestioacuten
por eso usan UDPenviacutean audiovideo a tasa constante toleran peacuterdida de paquetes
Equidad y conexiones TCP paralelasnada impide a una aplicacioacuten abrir conexiones paralelas entre 2 hostslos navegadores lo hacenejemplo enlace de tasa R permite 9 conexiones
una aplicacioacuten pide 1 TCP obtiene tasa R10una aplicacioacuten pide 11 TCPs iexcliexclobtiene tasa R2
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-105
Capiacutetulo 3 Resumenprincipios detraacutes de los servicios de la capa de transporte
multiplexacioacuten desmultiplexacioacutentransferencia de datos fiablecontrol de flujocontrol de congestioacuten
instanciacioacuten e implementacioacuten en Internet
UDPTCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-31
Rdt20 canal con errores de bitel canal subyacente puede alterar bits del paquete
usar el checksum para detectar errores de bitla cuestioacuten iquestcoacutemo recuperarse de erroresreconocimientos(lsquoacknowledgementsrsquo ACKs) el receptor indica expliacutecitamente que la recepcioacuten fue buenareconocimientos negativos (NAKs) el receptor indica expliacutecitamente que el paquete teniacutea erroresel emisor retransmite el paquete si recibe un NAK
nuevos mecanismos en rdt20 (sobre rdt10)deteccioacuten de erroresrealimentacioacuten del receptormensajes de control (ACKNAK) del receptor al emisor
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-32
rdt20 especificacioacuten de la MEF
esperar llamada de
arriba
sndpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
esperar ACK o NAK
esperar llamada de
abajoemisor
receptorrdt_send(data)
Λ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-33
rdt20 funcionamiento sin errores
esperar llamada de
arriba
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
esperar ACK o NAK
esperar llamada de
abajo
rdt_send(data)
Λ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-34
rdt20 caso de error
esperar llamada de
arriba
snkpkt = make_pkt(data checksum)udt_send(sndpkt)
extract(rcvpktdata)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampampisNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
esperar ACK o NAK
esperar llamada de
abajo
rdt_send(data)
Λ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-35
iexcl rdt20 tiene un defecto fatal
iquestQueacute ocurre si ACK o NAK se corrompeniexcliexclel emisor no sabe queacuteocurrioacute en el receptorno es posible simplemente retransmitir se pueden crear duplicados
Manejo de duplicados el emisor retransmite el paquete actual si ACK o NAK no llegan bienel emisor antildeade un nuacutemero de secuencia a cada paqueteel receptor descarta (no entrega hacia arriba) el paquete duplicado
el emisor enviacutea un paquetey espera la respuesta delreceptor
parada y espera
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-36
rdt21 el emisor maneja ACKNAKs erroacuteneos
esperar llamada 0 de arriba
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
esperar ACK o NAK 0 udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isNAK(rcvpkt) )
sndpkt = make_pkt(1 data checksum)udt_send(sndpkt)
rdt_send(data)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isNAK(rcvpkt) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt)
esperar llamada 1 de arriba
esperar ACK o NAK 1
ΛΛ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-37
rdt21 el receptor maneja ACKNAKs erroacuteneos
esperar 0 de abajo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
esperar 1 de abajo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-38
rdt21 discusioacuten
Emisornordm secuencia antildeadido al paquete2 nuacutemeros valen (01) iquestPor queacutecomprobar si el ACKNAK recibido corruptoel doble de estados
el estado debe ldquorecordarrdquo si el paquete ldquoactualrdquo tiene nordm sec 0 oacute1
Receptordebe comprobar si el paquete recibido es duplicado
el estado indica si se espera el paquete 0 oacute 1
nota el receptor no puede saber si su uacuteltimo ACKNAK se recibioacute bien en el emisor
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-39
rdt22 un protocolo sin NAK
la misma funcionalidad que rdt21 usando soacutelo ACKsen lugar de NAK el receptor enviacutea ACK para el uacuteltimo paquete recibido bien
el receptor debe incluir expliacutecitamente el nordm de secuencia del paquete al que se refiere el ACK
un ACK duplicado en el emisor resulta en la misma accioacuten que un NAK retransmitir paquete actual
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-40
rdt22 fragmentos del emisor y el receptor
esperar llamada 0 de arriba
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
esperar ACK 0
fragmento MEF emisor
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
esperar 0 de abajo
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)fragmento MEF
receptor
Λ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-41
rdt30 canales con errores y peacuterdidas
Nueva suposicioacuten canal subyacente tambieacuten puede perder paquetes (datos o ACKs)
las retransmisiones de checksum nordm secuencia ACKs ayudan pero no son suficiente
liacutenea de trabajo emisor espera un tiempo ldquorazonablerdquo al ACKretransmite si no recibe ACK en ese tiemposi el paquete (o ACK) soacutelo se retrasoacute (no se perdioacute)
las retransmisiones estaraacuten repetidas pero con el nordm secuencia esto estaacute resueltoel receptor debe indicar nordm secuencia del paquete al que se aplica el ACK
requiere un temporizadorRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-42
rdt30 emisorsndpkt = make_pkt(0 data checksum)udt_send(sndpkt)start_timer
rdt_send(data)
espe-rar
ACK 0
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt1) )
esperar llamada 1 de arriba
sndpkt = make_pkt(1 data checksum)udt_send(sndpkt)start_timer
rdt_send(data)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt0) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)
stop_timerstop_timer
udt_send(sndpkt)start_timer
timeout
udt_send(sndpkt)start_timer
timeout
rdt_rcv(rcvpkt)
esperar llamada 0 de arriba
esper-rar
ACK 1
Λrdt_rcv(rcvpkt)
ΛΛ
Λ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-43
rdt30 funcionando
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-44
rdt30 funcionando
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-45
Rendimiento del rdt30
rdt30 funciona pero el rendimiento es muy malopej enlace de 1Gbs 15ms retardo prop paquete 8k bits
si RTT=30 ms 1 paquete de 1KB cada 30 sg -gt 33KBs de 1Gbpsiexcliexclel protocolo de red limita el uso de los recursos fiacutesicos
dosmicrosegun 8bps10bits 8000
9 ===RLdtrans
U emisor utilizacioacuten ndash fraccioacuten de tiempo que el emisor estaacuteocupado emitiendo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-46
rdt30 funcionamiento de parada y espera
primer bit transmitido t = 0
emisor receptor
RTT
uacuteltimo bit transmitido t = L R
llega primer bitllega uacuteltimo bit enviar ACK
llega ACK enviar siguiente paquete t = RTT + L R
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-47
Protocolos segmentados (en cadena)segmentar el emisor permite que haya muacuteltiples
paquetes ldquoen caminordquo pendientes de ACKel rango de nordm de secuencia debe aumentarsehay que antildeadir buacutefferes en el emisor yo el receptor
hay dos formas geneacutericas de protocolos segmentados retroceder N (lsquogo-Back-Nrsquo) y repeticioacuten selectiva (lsquoselective repeatrsquo)
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-48
segmentacioacuten uso mejorado
primer bit transmitido t = 0
emisor receptor
RTT
uacuteltimo bit transmitido t = L R
llega el primer bitllega uacuteltimo bit 1er paquete enviar ACK
llega ACK enviar siguiente paquete t = RTT + L R
llega uacuteltimo bit 2ordm paquete enviar ACKllega uacuteltimo bit 3er paquete enviar ACK
iexcliexclMejora en la utilizacioacuten en un factor de 3
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-49
Protocolos segmentados
Retroceder N vista globalel emisor puede tener hasta N paquetes pendientes de ACKel receptor soacutelo enviacutea ACKs acumulativos
no lo enviacutea para un paquete si hay una laguna
el emisor tiene un temporizador para el paquete maacutes antiguo sin ACK
si llega a 0 retransmitir paquetes sin ACK
Repeticioacuten selectiva vista globalel emisor puede tener hasta N paquetes pendientes de ACKel receptor enviacutea ACK para cada paqueteel emisor mantiene un temporizador para cada paquete sin ACK
si llega a 0 retransmitir soacutelo paquete sin ACK
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-50
Retroceder N (GBN)Emisor
nordm de secuencia de k bits en cabecera del paqueteventana de hasta N paquetes consecutivos sin ACK
ACK(n) ACK para todos los paquetes hasta nordm sec n (inclusive) ldquoACK acumulativordquo
puede recibir ACKs duplicados (ver receptor)temporizador para cada paquete en camino timeout(n) retransmitir paquete n y todos los de mayor nordm sec en la ventanaRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-51
GBN MEF ampliada para el emisor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-52
GBN MEF ampliada del receptor
Enviar ACK para paquete correcto con mayor nordm de secuencia en orden
se pueden generar ACKs duplicadossoacutelo hay que recordar expectedseqnum
paquete fuera de ordendescartar (no se guarda) -gt iexcliexclno hay buffer en el receptorReenviar ACK para paquete con mayor nordm secuencia en orden
Wait
udt_send(sndpkt)default
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(expectedseqnumACKchksum)
Λ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-53
GBN enfunciona-miento
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-54
Repeticioacuten selectiva (SR)
el receptor enviacutea ACK individual para cada paquete correcto
se deben guardar los paquetes en buffers seguacuten sea necesario para entregarlos en orden a la capa superior
el emisor soacutelo reenviacutea paquetes para los que no reciba ACK
un temporizador para cada paquete en caminoventana de emisor
hay N nordm de secuencia consecutivosde nuevo limita nordmsec de los paquetes en camino
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-55
Repeticioacuten selectiva ventanas de emisor y receptor
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-56
Repeticioacuten selectiva
datos de arribasi sig nordm sec en la ventana vaciacuteo enviar paquete
timeout(n)reenviar paquete n reiniciar temporizador
ACK(n) en [sendbasesendbase+N]
marcar paquete n como recibidosi n era el paquete sin ACK con menor nordm sec avanzar el inicio de la ventana al siguiente nordm sec sin ACK
emisorpaquete n en [rcvbase rcvbase+N-1]
enviar ACK(n)fuera de orden guardar en bufferen orden entregar (junto con los previamente guardados por fuera de orden) avanzar ventana al siguiente pendiente de recibir
paquete n en [rcvbase-Nrcvbase-1]
ACK(n)otro caso
ignorar
receptor
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-57
repeticioacuten selectiva en funcionamiento
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-58
Repeticioacuten selectivadilema
Ejemplo nos sec 0 1 2 3tamantildeo ventana=3
iexclel receptor no ve diferencia entre ambos casosen (a) pasa datos repetidos por nuevos de forma incorrecta
P iquestrelacioacuten entre nordm de nos de secuencia vaacutelidos y tamantildeo de la ventanaRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-59
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacuten transferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-60
TCP Visioacuten global RFCs 793 1122 1323 2018 2581
datos full duplexflujo de datos bidireccional en la misma conexioacutenMSS Maacuteximo tamantildeo de segmento (lsquomaximum segment sizersquo)
orientado a conexioacutenestablecimiento conexioacuten (intercambio de mensajes) inicializa estados antes del intercambio de datos
con control de flujoel emisor no satura al receptor
punto a puntoun emisor un receptor
flujo de bytes fiable en orden
no hay ldquoliacutemites de mensajerdquosegmentado
el control de flujo y congestioacuten de TCP fijan el tamantildeo de la ventanabuffers de emisioacuten y recepcioacuten
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-61
estructura del segmento TCP
nordm puerto origen nordm puerto dest
32 bits
datosaplicacioacuten
(long variable)
nordm secuencianordm ACK
ventana recepcioacutenpuntero datos urgchecksum
FSRPAUlong encab
notused
Opciones (long variable)
URG datos urgentes(la aplicacioacuten debe
hacer algo)ACK nordm ACK
vaacutelidoPSH push enviar
estos datos ya a laaplicacioacuten
(el programador no puede manejarlo)
RST SYN FINestab conexioacuten
(comandos estab cerrar)
nordm bytes que el receptorestaacute dispuestoa aceptar
contados en bytes de datos(iexcliexclno segmentos)
checksum Internet
(como en UDP)
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
0 15 16 31
3-62
TCP nuacutems secuencia y ACKsnos secuencia
ldquonordmrdquo flujo de bytes del 1er byte de datos del segmento
ACKsnordm sec del siguiente byte esperado de la otra parteACK acumulativo
P coacutemo se tratan los segmentos fuera de orden
R la especificacioacuten de TCP no lo dice lo que haga el implementador
Host A Host B
Seq=42 ACK=79 data = lsquoCrsquo
Seq=79 ACK=43 data = lsquoCrsquo
Seq=43 ACK=80
Usuarioescribe
lsquoCrsquo
el host enviacuteaACK por ladevolucioacuten
de lsquoCrsquo
el host enviacutea ACK por lsquoCrsquodevuelve lsquoCrsquo
tiempoejemplo sencillo de telnet
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-63
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacutentransferencia de datos fiable control de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-64
TCP gestioacuten de la conexioacutenRecordatorio en TCP emisor y
receptor establecen una ldquoconexioacutenrdquo antes de intercambiar segmentos de datosinicializar variables TCP
nos de secuenciabuffers info de control de flujo (pej RcvWindow)
el cliente inicia la conexioacutenSocket clientSocket = new Socket(rdquonombrehostrdquonumero puerto)
el servidor el cliente contacta con eacutelSocket connectionSocket = welcomeSocketaccept()
Establecimiento en 3 pasos
Paso 1 el cliente envia segmento SYN al servidor
especifica nordm secuencia inicialsin datos
Paso 2 el servidor recibe SYN responde con segmento SYNACK
el servidor crea buffersespecifica el nordm sec inicial del servidor
Paso 3 el cliente recibe SYNACK responde con segmento ACK que puede contener datos
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-65
TCP gestioacuten de la conexioacuten (cont)
Cerrar una conexioacuten
el cliente cierra el socketclientSocketclose()
Paso 1 el sistema terminal del cliente enviacutea el segmento de control TCP FIN al servidor
Paso 2 el servidor recibe FIN responde con ACK Cierra la conexioacuten enviacutea FIN
cliente
FIN
servidor
ACK
ACK
FIN
cerrar
cerrar
cerrado
espe
ra
tem
pori
zada
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-66
TCP gestioacuten de la conexioacuten (cont)
Paso 3 el cliente recibe FIN responde con ACK
entra en ldquoespera temporizadardquo ndashresponderaacute con ACK a los FINs que reciba
Paso 4 el servidor recibe ACK Conexioacuten cerrada
Nota con una pequentildea modificacioacuten puede manejar FINs simultaacuteneos
cliente
FIN
servidor
ACK
ACK
FIN
cerrando
cerrando
cerrada
espe
ra
tem
pori
zada
cerrada
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-67
TCP gestioacuten de la conexioacuten (cont)
ciclo de vidade cliente TCP
ciclo de vidade servidor TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-68
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacutentransferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-69
TCP transferencia de datos fiable
TCP crea servicio rdtsobre el servicio no fiable de IPsegmentos en cadenaacks acumulativosTCP usa un uacutenico temporizador de retransmisioacuten
retransmisiones disparadas por
eventos de temporizador a ceroACKs duplicados
inicialmente considerar emisor TCP simplificado
ignorar ACKs duplicadosignorar control de flujo congestioacuten de flujo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-70
eventos de emisioacuten TCPdatos recibidos de la
aplicacioacutencrear segmento con nordmsecnordm sec es el nordm del 1er byte del segmento dentro del flujo de bytesiniciar temporizador si no lo estaacuteintervalo de expiracioacuten TimeOutInterval
lsquotimeoutrsquo (expiracioacuten)retransmitir segmento que la provocoacutereiniciar temporizador
ACK recibidosi se refiere a segmentos sin ACK previo
actualizar aquellos a los que les falta el ACKiniciar temporizador si hay segmentos pendientes
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-71
emisor TCP (simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (siempre) switch(suceso)
suceso datos recibidos de la aplicacioacuten de capa superiorcrear segmento TCP con nordm sec NextSeqNum if (temporizador no en marcha)
iniciar temporizadorpasar segmento a IP NextSeqNum = NextSeqNum + length(data)
suceso temporizador expiroacuteretransmitir segmento sin ACK con el menor nordm sec iniciar contador
suceso recibido ACK con valor del campo ACK == yif (y gt SendBase)
SendBase = yif (hay segmentos sin ACK)
iniciar temporizador
fin de loop siempre
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-72
TCP situaciones para retransmisioacutenHost A
Seq=100 20 bytes data
ACK=100
tiempotimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq=
92 t
imeo
ut
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
peacuterdida
tim
eout
situacioacuten de ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tiempo
Seq=
92 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
SendBase= 100
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-73
TCP situaciones para retransmisioacuten (maacutes)Host A
Seq=92 8 bytes data
ACK=100
peacuterdida
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
tiempo
SendBase= 120
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-74
generacioacuten de ACK en TCP [RFC 1122 RFC 2581]
Evento en Receptor
Llegada de segmento en orden connordm sec esperado Todos hasta elnordm sec esperado ya tienen ACK
Llegada de segmento en orden connordm sec esperado Hay otro seg en orden esperando transm de ACK
Llegada de nordm de sec fuera de orden mayor que el esperado Detectada laguna
Llegada de segmento que comple-ta parcialmente una laguna
Receptor TCP accioacuten
ACK retardado Esperar hasta 500msal siguiente segmento Si no llega enviarACK
Inmediatamente enviar ACK acumulativopara ambos segmentos
Inmediatamente enviar ACK duplicadoindicando nordm sec del siguiente byte esperado
Inmediatamente enviar ACK suponiendo que el segmento empieza en el liacutemite inferior de la laguna
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-75
Retransmisioacuten raacutepida
periacuteodo de expiracioacuten a menudo relativamente largo
largo retardo antes de reenviar el paquete perdido
se detectan segmentos perdidos por ACKs repetidos
el emisor a menudo enviacutea varios segmentos seguidossi se pierde un segmento seguramente habraacute varios ACKs repetidos
si el emisor recibe 3 ACKs por los mismos datos supone que el segmento de despueacutes de los datos con ACK se perdioacute
retransmisioacuten raacutepida reenviar segmento antes de que expire el temporizador
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-76
Host A
tim
eout
Host B
tiempo
X
reenviar 2ordm segmento
Figura 337 Reenviar segmento tras triple ACKRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-77
suceso recibido ACK con campo ACK con valor == s if (s gt SendBase)
SendBase = sif (hay segmentos pendientes de ACK)
iniciar temporizador
else incrementar cuenta de ACKs duplicados recibidos para s if (cuenta de ACKs duplicados para s == 3)
reenviar segmento con nordm sec s
Algoritmo de retransmisioacuten raacutepida
un ACK duplicado paraun segmento ya con ACK
retransmisioacuten raacutepida
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
Algoritmo de Nagle [RFC896]
Las conexiones interactivas (ssh telnet) suelen enviar segmentos con muy pocos datos (uno dos bytes)
iexclPeacuterdida de eficienciaEs maacutes interesante reunir varios datos procedentes de la aplicacioacuten y mandarlos todos juntosEl algoritmo de Nagle indica que no se enviacuteen nuevos segmentos mientras queden reconocimientos pendientes
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte 3-78
Algoritmo de Nagle [RFC896]
Evento en emisor
Llegada de datos de la aplicacioacutenHay ACKs pendientes
Llegada de un ACK pendiente
Llegada de datos de la aplicacioacutenNo hay ACKs pendientes
Llegada de datos de la aplicacioacutenNo queda sitio en el buffer delemisor
Accioacuten en emisor
Acumular datos en el buffer del emisor
Inmediatamente enviar todos los segmen-tos acumulados en buffer
Inmediatamente enviar datos al receptor
Inmediatamente enviar datos si lo permi-te la ventana aunque no se hayan reci-bido ACKs previos
Capa de Transporte 3-79Rauacutel Duraacuten Nacho Peacuterez v14
3-80
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacutentransferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-81
en TCP el receptor tiene un buffer de recepcioacuten
servicio de equilibrado de velocidad equilibrar la velocidad de enviacuteo a la de la aplicacioacuten vaciando el buffer de recepcioacutenla aplicacioacuten puede ser
lenta leyendo del buffer
el emisor no saturaraacuteel buffer del receptor
a base de enviar mucho muy seguido
control de flujoTCP Control de flujo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-82
TCP control de flujo coacutemo funciona
(suponer que el receptor TCP descarta segmentos fuera de orden)hay sitio en el buffer
RcvWindow = RcvBuffer -[LastByteRcvd - LastByteRead]
el receptor anuncia el espacio libre incluyendo el valor RcvWindow en los segmentosel emisor limita los datos sin ACK a RcvWindow
garantiza que el buffer de recepcioacuten no se desborda
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-83
TCP lsquoRound Trip Timersquo y lsquoTimeoutrsquo
P iquestcoacutemo fijar el tiempo de lsquotimeoutrsquo de TCPmaacutes que RTT
pero RTT variacuteasi demasiado corto lsquotimeoutrsquo prematuro
retransmisiones innecesarias
si demasiado largo reaccioacuten lenta a peacuterdidas
P iquestcoacutemo estimar RTTSampleRTT tiempo medido desde transmisioacuten de un segmento hasta recepcioacuten de ACK
ignorar retransmisionesSampleRTT variaraacute queremos un valor maacutes ldquoestablerdquo
promedio de varias mediciones recientes no el valor actual
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-84
TCP lsquoRound Trip Timersquo y lsquoTimeoutrsquo
EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT
media moacutevil ponderada exponencialla influencia de una muestra pasada decrece exponencialmentevalor tiacutepico α = 0125
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-85
Ejemplo de estimacioacuten de RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106time (seconnds)
RTT
(mill
iseco
nds)
SampleRTT Estimated RTT
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-86
TCP lsquoRound Trip Timersquo y lsquoTimeoutrsquoFijar el tiempo de expiracioacuten (lsquotimeoutrsquo)
EstimatedRTT maacutes ldquomargen de seguridadrdquogran variacioacuten en EstimatedRTT -gt mayor margen de seguridad
primero estimar cuaacutento SampleRTT se desviacutea de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-β)DevRTT +β|SampleRTT-EstimatedRTT|
(tiacutepicamente β = 025)
Entonces fijar el tiempo de expiracioacuten
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
Algoritmo de Karn
Si recibimos el reconocimiento de un paquete retransmitido no tenemos forma de saber a cuaacutel de las retransmisiones corresponde ese reconocimientoPor ello se ignoran los paquetes retransmitidos a la hora de computar el RTTEste procedimiento se denomina algoritmo de Karn
3-87Capa de TransporteRauacutel Duraacuten Nacho Peacuterez v14
3-88
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacuten transferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-89
Principios de control de la congestioacuten
Congestioacuteninformal ldquodemasiadas fuentes enviando demasiados datos demasiado deprisa para que la red lo pueda asimilarrdquoiexcliexcldiferente a control de flujosiacutentomas
paquetes perdidos (desbordamiento de bufferes en los routers)grandes retardos (encolado en los bufferes de los routers)iexcliexclun problema ldquotop-10rdquo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-90
Formas de abordar el control de congestioacuten
control de terminal a terminalno hay realimentacioacuten expliacutecita de la redla congestioacuten se deduce por el retardo y las peacuterdidas observadas por los terminaleseste es el meacutetodo de TCP
control asistido por la redlos routers proporcionan realimentacioacuten a los terminales
un bit que indica la congestioacuten (SNA DECnet TCPIP ECN ATM)indicacioacuten expliacutecita de la tasa a la que el emisor deberiacutea enviar
Dos formas principales de abordarla
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-91
Caso de estudio servicio ABR de las redes ATM
ABR lsquoAvailable Bit Ratersquo(Tasa de bits disponible)
ldquoservicio elaacutesticordquosi la ruta del emisor ldquoinfra-cargadardquo
el emisor deberiacutea usar el ancho de banda disponible
si la ruta del emisor estaacutecongestionada
el emisor se limita a la tasa garantizada
ceacutelulas RM (lsquoresource managementrsquo gestioacuten de recursos) enviado por el emisor intercalado con las celdas de datoslos bits en las celdas RM se rellenan por los switches (ldquoasistido por la redrdquo)
bit NI no hay mejora en la velocidad (congestioacuten suave)bit CI indica congestioacuten
las celdas RM se devuelven al emisor por el receptor sin modificar
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-92
Caso de estudio servicio ABR de las redes ATM
campo ER (lsquoexplicit ratersquo tasa expliacutecita) de 2 bytes en celda RM
un switch congestionado puede rebajar el valor ERla tasa del emisor es asiacute la maacutexima que puede aguantar la ruta
bit EFCI en celdas de datos se pone a 1 en switch congestionado
si la celda que precede a la RM tiene EFCI a 1 el emisor pone a1 el bit CI en la celda RM devueltaRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-93
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacuten transferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-94
control de congestioacuten en TCP incremento aditivo decremento multiplicativo
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
filosofiacutea incrementar la tasa de transmisioacuten (tamantildeo de la ventana) sondeando el ancho de banda accesible hasta que hay peacuterdidas
incremento aditivo incrementar cwnd en 1 MSS cada RTT hasta que haya peacuterdidasdecremento multiplicativo dividir cwnd por 2 cuando las haya
tiempo
cwnd
tam
antildeo
de la
ven
tana
co
n co
nges
tioacuten
diente de sierra sondeo del ancho
de banda
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-95
Control de congestioacuten TCP detalles
el emisor limita la transmisioacutenLastByteSent-LastByteAcked
le cwnd
lsquogrosso modorsquo
cwnd es dinaacutemica funcioacuten de la congestioacuten de la red percibida
iquestCoacutemo percibe el emisor la congestioacutenevento de peacuterdida = expiracioacuten o 3 ACKs duplicadosel emisor reduce la tasa (cwnd) tras un evento de peacuterdida
3 mecanismosAIMDarranque lentoconservador tras eventos de expiracioacuten
tasa = cwndRTT Bytess
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-96
TCP Arranque lento
cuando se inicia la conexioacuten la tasa se incrementa exponencialmente hasta la primera peacuterdida
inicialmente cwnd = 1 MSScwnd se dobla cada RTTse incrementa cwnd con cada ACK recibido
resumen la tasa inicial es baja pero crece exponencialmente raacutepido
Host A
un segmento
RTT
Host B
tiempo
2 segmentos
4 segmentos
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-97
Refinado deduccioacuten de peacuterdidastras 3 ACKs duplicados
cwnd se divide por 2la ventana ya crece linealmente
pero tras una expiracioacutencwnd en cambio se pone a 1 MSS la ventana entonces crece exponencialmentehasta un umbral luego linealmente
3 ACKs duplicados indica que la red es capaz de entregar algunos segmentos
expiracioacuten indica una situacioacuten de congestioacuten ldquomaacutes alarmanterdquo
Filosofiacutea
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-98
RefinadoP iquestcuaacutendo deberiacutea
pasarse de incremento exponencial a lineal
R cuando cwnd llegue a 12 de su valor antes de la expiracioacuten
Implementacioacutenvariable ssthreshcon una peacuterdida ssthreshse pone a 12 de cwndjusto antes de la peacuterdida
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-99
Resumen Control de congestioacuten TCP
expiracioacutenssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmitir segmento que falta
Λcwnd gt ssthresh
evitacioacuten decongestion
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmitir nuevo(s) segmento(s) seguacuten se pueda
ACK nuevo
dupACKcount++ACK duplicado
recuperacioacuten raacutepida
cwnd = cwnd + MSStransmitir nuevo(s) segmento(s) seguacuten se pueda
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmitir segmento que falta
dupACKcount == 3
expiracioacutenssthresh = cwnd2
cwnd = 1 dupACKcount = 0
retransmitir segmento que faltassthresh= cwnd2
cwnd = ssthresh + 3retransmitir segmento que falta
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
ACK nuevo
arranque lento
expiracioacutenssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmitir segmento que falta
cwnd = cwnd+MSSdupACKcount = 0transmitir nuevo(s) segmento(s) seguacuten se pueda
ACK nuevodupACKcount++ACK duplicado
Λcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NewACK
NewACK
NewACK
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-100
eficiencia de TCP
iquestcuaacutel es la tasa media de TCP en funcioacuten del tamantildeo de ventana y RTT
ignorar el arranque raacutepidosea W el tamantildeo de la ventana cuando ocurre una peacuterdida
cuando la ventana es W la tasa es WRTTjusto tras la peacuterdida la ventana pasa a W2 y la tasa a W2RTTla tasa media es 075 WRTT
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-101
Futuros de TCP TCP sobre ldquotubos largos y gruesosrdquo
ejemplo segmentos de 1500 bytes RTT 100ms se quiere tasa de 10 Gbps requiere tamantildeo de ventana W = 83333 segmentos en traacutensitotasa de transferencia en funcioacuten de la tasa de peacuterdidas
L = 210-10 iexcliexcluna tasa de peacuterdidas muy bajanuevas versiones de TCP para alta velocidad
LRTTMSSsdot221
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-102
objetivo de equidad si K sesiones TCP comparten el mismo enlace cuello de botella de ancho de banda R cada uno deberiacutea tener una tasa media de RK
conexioacuten TCP 1
router cuello de botella
capacidad Rconexioacuten TCP 2
Equidad en TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-103
iquestPor queacute es equitativoTCP2 sesiones que compiten
el incremento aditivo da una pendiente de 1 en los incrementosel decremento multiplicativo decrementa la tasa proporcionalmente
R
R
reparto equitativo del ancho de banda
tasa de transferencia
de la conexioacuten 1
tasa
de
tran
sfer
enc i
a
de la
con
exioacute
n 2
evitacioacuten de congestioacuten incremento aditivopeacuterdida decrementar ventana en un factor de 2evitacioacuten de congestioacuten incremento aditivo
peacuterdida decrementar ventana en un factor de 2
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-104
Equidad (maacutes)Equidad y UDP
las aplicaciones multimedia a menudo no usan TCP
no quieren que la tasa de transf se limite por el control de congestioacuten
por eso usan UDPenviacutean audiovideo a tasa constante toleran peacuterdida de paquetes
Equidad y conexiones TCP paralelasnada impide a una aplicacioacuten abrir conexiones paralelas entre 2 hostslos navegadores lo hacenejemplo enlace de tasa R permite 9 conexiones
una aplicacioacuten pide 1 TCP obtiene tasa R10una aplicacioacuten pide 11 TCPs iexcliexclobtiene tasa R2
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-105
Capiacutetulo 3 Resumenprincipios detraacutes de los servicios de la capa de transporte
multiplexacioacuten desmultiplexacioacutentransferencia de datos fiablecontrol de flujocontrol de congestioacuten
instanciacioacuten e implementacioacuten en Internet
UDPTCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-37
rdt21 el receptor maneja ACKNAKs erroacuteneos
esperar 0 de abajo
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
esperar 1 de abajo
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq0(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq1(rcvpkt)
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)
sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-38
rdt21 discusioacuten
Emisornordm secuencia antildeadido al paquete2 nuacutemeros valen (01) iquestPor queacutecomprobar si el ACKNAK recibido corruptoel doble de estados
el estado debe ldquorecordarrdquo si el paquete ldquoactualrdquo tiene nordm sec 0 oacute1
Receptordebe comprobar si el paquete recibido es duplicado
el estado indica si se espera el paquete 0 oacute 1
nota el receptor no puede saber si su uacuteltimo ACKNAK se recibioacute bien en el emisor
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-39
rdt22 un protocolo sin NAK
la misma funcionalidad que rdt21 usando soacutelo ACKsen lugar de NAK el receptor enviacutea ACK para el uacuteltimo paquete recibido bien
el receptor debe incluir expliacutecitamente el nordm de secuencia del paquete al que se refiere el ACK
un ACK duplicado en el emisor resulta en la misma accioacuten que un NAK retransmitir paquete actual
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-40
rdt22 fragmentos del emisor y el receptor
esperar llamada 0 de arriba
sndpkt = make_pkt(0 data checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||
isACK(rcvpkt1) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
esperar ACK 0
fragmento MEF emisor
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)
esperar 0 de abajo
rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)fragmento MEF
receptor
Λ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-41
rdt30 canales con errores y peacuterdidas
Nueva suposicioacuten canal subyacente tambieacuten puede perder paquetes (datos o ACKs)
las retransmisiones de checksum nordm secuencia ACKs ayudan pero no son suficiente
liacutenea de trabajo emisor espera un tiempo ldquorazonablerdquo al ACKretransmite si no recibe ACK en ese tiemposi el paquete (o ACK) soacutelo se retrasoacute (no se perdioacute)
las retransmisiones estaraacuten repetidas pero con el nordm secuencia esto estaacute resueltoel receptor debe indicar nordm secuencia del paquete al que se aplica el ACK
requiere un temporizadorRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-42
rdt30 emisorsndpkt = make_pkt(0 data checksum)udt_send(sndpkt)start_timer
rdt_send(data)
espe-rar
ACK 0
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt1) )
esperar llamada 1 de arriba
sndpkt = make_pkt(1 data checksum)udt_send(sndpkt)start_timer
rdt_send(data)
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt0)
rdt_rcv(rcvpkt) ampamp ( corrupt(rcvpkt) ||isACK(rcvpkt0) )
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp isACK(rcvpkt1)
stop_timerstop_timer
udt_send(sndpkt)start_timer
timeout
udt_send(sndpkt)start_timer
timeout
rdt_rcv(rcvpkt)
esperar llamada 0 de arriba
esper-rar
ACK 1
Λrdt_rcv(rcvpkt)
ΛΛ
Λ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-43
rdt30 funcionando
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-44
rdt30 funcionando
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-45
Rendimiento del rdt30
rdt30 funciona pero el rendimiento es muy malopej enlace de 1Gbs 15ms retardo prop paquete 8k bits
si RTT=30 ms 1 paquete de 1KB cada 30 sg -gt 33KBs de 1Gbpsiexcliexclel protocolo de red limita el uso de los recursos fiacutesicos
dosmicrosegun 8bps10bits 8000
9 ===RLdtrans
U emisor utilizacioacuten ndash fraccioacuten de tiempo que el emisor estaacuteocupado emitiendo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-46
rdt30 funcionamiento de parada y espera
primer bit transmitido t = 0
emisor receptor
RTT
uacuteltimo bit transmitido t = L R
llega primer bitllega uacuteltimo bit enviar ACK
llega ACK enviar siguiente paquete t = RTT + L R
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-47
Protocolos segmentados (en cadena)segmentar el emisor permite que haya muacuteltiples
paquetes ldquoen caminordquo pendientes de ACKel rango de nordm de secuencia debe aumentarsehay que antildeadir buacutefferes en el emisor yo el receptor
hay dos formas geneacutericas de protocolos segmentados retroceder N (lsquogo-Back-Nrsquo) y repeticioacuten selectiva (lsquoselective repeatrsquo)
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-48
segmentacioacuten uso mejorado
primer bit transmitido t = 0
emisor receptor
RTT
uacuteltimo bit transmitido t = L R
llega el primer bitllega uacuteltimo bit 1er paquete enviar ACK
llega ACK enviar siguiente paquete t = RTT + L R
llega uacuteltimo bit 2ordm paquete enviar ACKllega uacuteltimo bit 3er paquete enviar ACK
iexcliexclMejora en la utilizacioacuten en un factor de 3
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-49
Protocolos segmentados
Retroceder N vista globalel emisor puede tener hasta N paquetes pendientes de ACKel receptor soacutelo enviacutea ACKs acumulativos
no lo enviacutea para un paquete si hay una laguna
el emisor tiene un temporizador para el paquete maacutes antiguo sin ACK
si llega a 0 retransmitir paquetes sin ACK
Repeticioacuten selectiva vista globalel emisor puede tener hasta N paquetes pendientes de ACKel receptor enviacutea ACK para cada paqueteel emisor mantiene un temporizador para cada paquete sin ACK
si llega a 0 retransmitir soacutelo paquete sin ACK
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-50
Retroceder N (GBN)Emisor
nordm de secuencia de k bits en cabecera del paqueteventana de hasta N paquetes consecutivos sin ACK
ACK(n) ACK para todos los paquetes hasta nordm sec n (inclusive) ldquoACK acumulativordquo
puede recibir ACKs duplicados (ver receptor)temporizador para cada paquete en camino timeout(n) retransmitir paquete n y todos los de mayor nordm sec en la ventanaRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-51
GBN MEF ampliada para el emisor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-52
GBN MEF ampliada del receptor
Enviar ACK para paquete correcto con mayor nordm de secuencia en orden
se pueden generar ACKs duplicadossoacutelo hay que recordar expectedseqnum
paquete fuera de ordendescartar (no se guarda) -gt iexcliexclno hay buffer en el receptorReenviar ACK para paquete con mayor nordm secuencia en orden
Wait
udt_send(sndpkt)default
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(expectedseqnumACKchksum)
Λ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-53
GBN enfunciona-miento
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-54
Repeticioacuten selectiva (SR)
el receptor enviacutea ACK individual para cada paquete correcto
se deben guardar los paquetes en buffers seguacuten sea necesario para entregarlos en orden a la capa superior
el emisor soacutelo reenviacutea paquetes para los que no reciba ACK
un temporizador para cada paquete en caminoventana de emisor
hay N nordm de secuencia consecutivosde nuevo limita nordmsec de los paquetes en camino
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-55
Repeticioacuten selectiva ventanas de emisor y receptor
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-56
Repeticioacuten selectiva
datos de arribasi sig nordm sec en la ventana vaciacuteo enviar paquete
timeout(n)reenviar paquete n reiniciar temporizador
ACK(n) en [sendbasesendbase+N]
marcar paquete n como recibidosi n era el paquete sin ACK con menor nordm sec avanzar el inicio de la ventana al siguiente nordm sec sin ACK
emisorpaquete n en [rcvbase rcvbase+N-1]
enviar ACK(n)fuera de orden guardar en bufferen orden entregar (junto con los previamente guardados por fuera de orden) avanzar ventana al siguiente pendiente de recibir
paquete n en [rcvbase-Nrcvbase-1]
ACK(n)otro caso
ignorar
receptor
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-57
repeticioacuten selectiva en funcionamiento
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-58
Repeticioacuten selectivadilema
Ejemplo nos sec 0 1 2 3tamantildeo ventana=3
iexclel receptor no ve diferencia entre ambos casosen (a) pasa datos repetidos por nuevos de forma incorrecta
P iquestrelacioacuten entre nordm de nos de secuencia vaacutelidos y tamantildeo de la ventanaRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-59
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacuten transferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-60
TCP Visioacuten global RFCs 793 1122 1323 2018 2581
datos full duplexflujo de datos bidireccional en la misma conexioacutenMSS Maacuteximo tamantildeo de segmento (lsquomaximum segment sizersquo)
orientado a conexioacutenestablecimiento conexioacuten (intercambio de mensajes) inicializa estados antes del intercambio de datos
con control de flujoel emisor no satura al receptor
punto a puntoun emisor un receptor
flujo de bytes fiable en orden
no hay ldquoliacutemites de mensajerdquosegmentado
el control de flujo y congestioacuten de TCP fijan el tamantildeo de la ventanabuffers de emisioacuten y recepcioacuten
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-61
estructura del segmento TCP
nordm puerto origen nordm puerto dest
32 bits
datosaplicacioacuten
(long variable)
nordm secuencianordm ACK
ventana recepcioacutenpuntero datos urgchecksum
FSRPAUlong encab
notused
Opciones (long variable)
URG datos urgentes(la aplicacioacuten debe
hacer algo)ACK nordm ACK
vaacutelidoPSH push enviar
estos datos ya a laaplicacioacuten
(el programador no puede manejarlo)
RST SYN FINestab conexioacuten
(comandos estab cerrar)
nordm bytes que el receptorestaacute dispuestoa aceptar
contados en bytes de datos(iexcliexclno segmentos)
checksum Internet
(como en UDP)
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
0 15 16 31
3-62
TCP nuacutems secuencia y ACKsnos secuencia
ldquonordmrdquo flujo de bytes del 1er byte de datos del segmento
ACKsnordm sec del siguiente byte esperado de la otra parteACK acumulativo
P coacutemo se tratan los segmentos fuera de orden
R la especificacioacuten de TCP no lo dice lo que haga el implementador
Host A Host B
Seq=42 ACK=79 data = lsquoCrsquo
Seq=79 ACK=43 data = lsquoCrsquo
Seq=43 ACK=80
Usuarioescribe
lsquoCrsquo
el host enviacuteaACK por ladevolucioacuten
de lsquoCrsquo
el host enviacutea ACK por lsquoCrsquodevuelve lsquoCrsquo
tiempoejemplo sencillo de telnet
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-63
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacutentransferencia de datos fiable control de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-64
TCP gestioacuten de la conexioacutenRecordatorio en TCP emisor y
receptor establecen una ldquoconexioacutenrdquo antes de intercambiar segmentos de datosinicializar variables TCP
nos de secuenciabuffers info de control de flujo (pej RcvWindow)
el cliente inicia la conexioacutenSocket clientSocket = new Socket(rdquonombrehostrdquonumero puerto)
el servidor el cliente contacta con eacutelSocket connectionSocket = welcomeSocketaccept()
Establecimiento en 3 pasos
Paso 1 el cliente envia segmento SYN al servidor
especifica nordm secuencia inicialsin datos
Paso 2 el servidor recibe SYN responde con segmento SYNACK
el servidor crea buffersespecifica el nordm sec inicial del servidor
Paso 3 el cliente recibe SYNACK responde con segmento ACK que puede contener datos
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-65
TCP gestioacuten de la conexioacuten (cont)
Cerrar una conexioacuten
el cliente cierra el socketclientSocketclose()
Paso 1 el sistema terminal del cliente enviacutea el segmento de control TCP FIN al servidor
Paso 2 el servidor recibe FIN responde con ACK Cierra la conexioacuten enviacutea FIN
cliente
FIN
servidor
ACK
ACK
FIN
cerrar
cerrar
cerrado
espe
ra
tem
pori
zada
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-66
TCP gestioacuten de la conexioacuten (cont)
Paso 3 el cliente recibe FIN responde con ACK
entra en ldquoespera temporizadardquo ndashresponderaacute con ACK a los FINs que reciba
Paso 4 el servidor recibe ACK Conexioacuten cerrada
Nota con una pequentildea modificacioacuten puede manejar FINs simultaacuteneos
cliente
FIN
servidor
ACK
ACK
FIN
cerrando
cerrando
cerrada
espe
ra
tem
pori
zada
cerrada
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-67
TCP gestioacuten de la conexioacuten (cont)
ciclo de vidade cliente TCP
ciclo de vidade servidor TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-68
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacutentransferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-69
TCP transferencia de datos fiable
TCP crea servicio rdtsobre el servicio no fiable de IPsegmentos en cadenaacks acumulativosTCP usa un uacutenico temporizador de retransmisioacuten
retransmisiones disparadas por
eventos de temporizador a ceroACKs duplicados
inicialmente considerar emisor TCP simplificado
ignorar ACKs duplicadosignorar control de flujo congestioacuten de flujo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-70
eventos de emisioacuten TCPdatos recibidos de la
aplicacioacutencrear segmento con nordmsecnordm sec es el nordm del 1er byte del segmento dentro del flujo de bytesiniciar temporizador si no lo estaacuteintervalo de expiracioacuten TimeOutInterval
lsquotimeoutrsquo (expiracioacuten)retransmitir segmento que la provocoacutereiniciar temporizador
ACK recibidosi se refiere a segmentos sin ACK previo
actualizar aquellos a los que les falta el ACKiniciar temporizador si hay segmentos pendientes
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-71
emisor TCP (simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (siempre) switch(suceso)
suceso datos recibidos de la aplicacioacuten de capa superiorcrear segmento TCP con nordm sec NextSeqNum if (temporizador no en marcha)
iniciar temporizadorpasar segmento a IP NextSeqNum = NextSeqNum + length(data)
suceso temporizador expiroacuteretransmitir segmento sin ACK con el menor nordm sec iniciar contador
suceso recibido ACK con valor del campo ACK == yif (y gt SendBase)
SendBase = yif (hay segmentos sin ACK)
iniciar temporizador
fin de loop siempre
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-72
TCP situaciones para retransmisioacutenHost A
Seq=100 20 bytes data
ACK=100
tiempotimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq=
92 t
imeo
ut
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
peacuterdida
tim
eout
situacioacuten de ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tiempo
Seq=
92 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
SendBase= 100
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-73
TCP situaciones para retransmisioacuten (maacutes)Host A
Seq=92 8 bytes data
ACK=100
peacuterdida
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
tiempo
SendBase= 120
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-74
generacioacuten de ACK en TCP [RFC 1122 RFC 2581]
Evento en Receptor
Llegada de segmento en orden connordm sec esperado Todos hasta elnordm sec esperado ya tienen ACK
Llegada de segmento en orden connordm sec esperado Hay otro seg en orden esperando transm de ACK
Llegada de nordm de sec fuera de orden mayor que el esperado Detectada laguna
Llegada de segmento que comple-ta parcialmente una laguna
Receptor TCP accioacuten
ACK retardado Esperar hasta 500msal siguiente segmento Si no llega enviarACK
Inmediatamente enviar ACK acumulativopara ambos segmentos
Inmediatamente enviar ACK duplicadoindicando nordm sec del siguiente byte esperado
Inmediatamente enviar ACK suponiendo que el segmento empieza en el liacutemite inferior de la laguna
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-75
Retransmisioacuten raacutepida
periacuteodo de expiracioacuten a menudo relativamente largo
largo retardo antes de reenviar el paquete perdido
se detectan segmentos perdidos por ACKs repetidos
el emisor a menudo enviacutea varios segmentos seguidossi se pierde un segmento seguramente habraacute varios ACKs repetidos
si el emisor recibe 3 ACKs por los mismos datos supone que el segmento de despueacutes de los datos con ACK se perdioacute
retransmisioacuten raacutepida reenviar segmento antes de que expire el temporizador
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-76
Host A
tim
eout
Host B
tiempo
X
reenviar 2ordm segmento
Figura 337 Reenviar segmento tras triple ACKRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-77
suceso recibido ACK con campo ACK con valor == s if (s gt SendBase)
SendBase = sif (hay segmentos pendientes de ACK)
iniciar temporizador
else incrementar cuenta de ACKs duplicados recibidos para s if (cuenta de ACKs duplicados para s == 3)
reenviar segmento con nordm sec s
Algoritmo de retransmisioacuten raacutepida
un ACK duplicado paraun segmento ya con ACK
retransmisioacuten raacutepida
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
Algoritmo de Nagle [RFC896]
Las conexiones interactivas (ssh telnet) suelen enviar segmentos con muy pocos datos (uno dos bytes)
iexclPeacuterdida de eficienciaEs maacutes interesante reunir varios datos procedentes de la aplicacioacuten y mandarlos todos juntosEl algoritmo de Nagle indica que no se enviacuteen nuevos segmentos mientras queden reconocimientos pendientes
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte 3-78
Algoritmo de Nagle [RFC896]
Evento en emisor
Llegada de datos de la aplicacioacutenHay ACKs pendientes
Llegada de un ACK pendiente
Llegada de datos de la aplicacioacutenNo hay ACKs pendientes
Llegada de datos de la aplicacioacutenNo queda sitio en el buffer delemisor
Accioacuten en emisor
Acumular datos en el buffer del emisor
Inmediatamente enviar todos los segmen-tos acumulados en buffer
Inmediatamente enviar datos al receptor
Inmediatamente enviar datos si lo permi-te la ventana aunque no se hayan reci-bido ACKs previos
Capa de Transporte 3-79Rauacutel Duraacuten Nacho Peacuterez v14
3-80
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacutentransferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-81
en TCP el receptor tiene un buffer de recepcioacuten
servicio de equilibrado de velocidad equilibrar la velocidad de enviacuteo a la de la aplicacioacuten vaciando el buffer de recepcioacutenla aplicacioacuten puede ser
lenta leyendo del buffer
el emisor no saturaraacuteel buffer del receptor
a base de enviar mucho muy seguido
control de flujoTCP Control de flujo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-82
TCP control de flujo coacutemo funciona
(suponer que el receptor TCP descarta segmentos fuera de orden)hay sitio en el buffer
RcvWindow = RcvBuffer -[LastByteRcvd - LastByteRead]
el receptor anuncia el espacio libre incluyendo el valor RcvWindow en los segmentosel emisor limita los datos sin ACK a RcvWindow
garantiza que el buffer de recepcioacuten no se desborda
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-83
TCP lsquoRound Trip Timersquo y lsquoTimeoutrsquo
P iquestcoacutemo fijar el tiempo de lsquotimeoutrsquo de TCPmaacutes que RTT
pero RTT variacuteasi demasiado corto lsquotimeoutrsquo prematuro
retransmisiones innecesarias
si demasiado largo reaccioacuten lenta a peacuterdidas
P iquestcoacutemo estimar RTTSampleRTT tiempo medido desde transmisioacuten de un segmento hasta recepcioacuten de ACK
ignorar retransmisionesSampleRTT variaraacute queremos un valor maacutes ldquoestablerdquo
promedio de varias mediciones recientes no el valor actual
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-84
TCP lsquoRound Trip Timersquo y lsquoTimeoutrsquo
EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT
media moacutevil ponderada exponencialla influencia de una muestra pasada decrece exponencialmentevalor tiacutepico α = 0125
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-85
Ejemplo de estimacioacuten de RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106time (seconnds)
RTT
(mill
iseco
nds)
SampleRTT Estimated RTT
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-86
TCP lsquoRound Trip Timersquo y lsquoTimeoutrsquoFijar el tiempo de expiracioacuten (lsquotimeoutrsquo)
EstimatedRTT maacutes ldquomargen de seguridadrdquogran variacioacuten en EstimatedRTT -gt mayor margen de seguridad
primero estimar cuaacutento SampleRTT se desviacutea de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-β)DevRTT +β|SampleRTT-EstimatedRTT|
(tiacutepicamente β = 025)
Entonces fijar el tiempo de expiracioacuten
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
Algoritmo de Karn
Si recibimos el reconocimiento de un paquete retransmitido no tenemos forma de saber a cuaacutel de las retransmisiones corresponde ese reconocimientoPor ello se ignoran los paquetes retransmitidos a la hora de computar el RTTEste procedimiento se denomina algoritmo de Karn
3-87Capa de TransporteRauacutel Duraacuten Nacho Peacuterez v14
3-88
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacuten transferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-89
Principios de control de la congestioacuten
Congestioacuteninformal ldquodemasiadas fuentes enviando demasiados datos demasiado deprisa para que la red lo pueda asimilarrdquoiexcliexcldiferente a control de flujosiacutentomas
paquetes perdidos (desbordamiento de bufferes en los routers)grandes retardos (encolado en los bufferes de los routers)iexcliexclun problema ldquotop-10rdquo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-90
Formas de abordar el control de congestioacuten
control de terminal a terminalno hay realimentacioacuten expliacutecita de la redla congestioacuten se deduce por el retardo y las peacuterdidas observadas por los terminaleseste es el meacutetodo de TCP
control asistido por la redlos routers proporcionan realimentacioacuten a los terminales
un bit que indica la congestioacuten (SNA DECnet TCPIP ECN ATM)indicacioacuten expliacutecita de la tasa a la que el emisor deberiacutea enviar
Dos formas principales de abordarla
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-91
Caso de estudio servicio ABR de las redes ATM
ABR lsquoAvailable Bit Ratersquo(Tasa de bits disponible)
ldquoservicio elaacutesticordquosi la ruta del emisor ldquoinfra-cargadardquo
el emisor deberiacutea usar el ancho de banda disponible
si la ruta del emisor estaacutecongestionada
el emisor se limita a la tasa garantizada
ceacutelulas RM (lsquoresource managementrsquo gestioacuten de recursos) enviado por el emisor intercalado con las celdas de datoslos bits en las celdas RM se rellenan por los switches (ldquoasistido por la redrdquo)
bit NI no hay mejora en la velocidad (congestioacuten suave)bit CI indica congestioacuten
las celdas RM se devuelven al emisor por el receptor sin modificar
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-92
Caso de estudio servicio ABR de las redes ATM
campo ER (lsquoexplicit ratersquo tasa expliacutecita) de 2 bytes en celda RM
un switch congestionado puede rebajar el valor ERla tasa del emisor es asiacute la maacutexima que puede aguantar la ruta
bit EFCI en celdas de datos se pone a 1 en switch congestionado
si la celda que precede a la RM tiene EFCI a 1 el emisor pone a1 el bit CI en la celda RM devueltaRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-93
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacuten transferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-94
control de congestioacuten en TCP incremento aditivo decremento multiplicativo
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
filosofiacutea incrementar la tasa de transmisioacuten (tamantildeo de la ventana) sondeando el ancho de banda accesible hasta que hay peacuterdidas
incremento aditivo incrementar cwnd en 1 MSS cada RTT hasta que haya peacuterdidasdecremento multiplicativo dividir cwnd por 2 cuando las haya
tiempo
cwnd
tam
antildeo
de la
ven
tana
co
n co
nges
tioacuten
diente de sierra sondeo del ancho
de banda
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-95
Control de congestioacuten TCP detalles
el emisor limita la transmisioacutenLastByteSent-LastByteAcked
le cwnd
lsquogrosso modorsquo
cwnd es dinaacutemica funcioacuten de la congestioacuten de la red percibida
iquestCoacutemo percibe el emisor la congestioacutenevento de peacuterdida = expiracioacuten o 3 ACKs duplicadosel emisor reduce la tasa (cwnd) tras un evento de peacuterdida
3 mecanismosAIMDarranque lentoconservador tras eventos de expiracioacuten
tasa = cwndRTT Bytess
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-96
TCP Arranque lento
cuando se inicia la conexioacuten la tasa se incrementa exponencialmente hasta la primera peacuterdida
inicialmente cwnd = 1 MSScwnd se dobla cada RTTse incrementa cwnd con cada ACK recibido
resumen la tasa inicial es baja pero crece exponencialmente raacutepido
Host A
un segmento
RTT
Host B
tiempo
2 segmentos
4 segmentos
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-97
Refinado deduccioacuten de peacuterdidastras 3 ACKs duplicados
cwnd se divide por 2la ventana ya crece linealmente
pero tras una expiracioacutencwnd en cambio se pone a 1 MSS la ventana entonces crece exponencialmentehasta un umbral luego linealmente
3 ACKs duplicados indica que la red es capaz de entregar algunos segmentos
expiracioacuten indica una situacioacuten de congestioacuten ldquomaacutes alarmanterdquo
Filosofiacutea
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-98
RefinadoP iquestcuaacutendo deberiacutea
pasarse de incremento exponencial a lineal
R cuando cwnd llegue a 12 de su valor antes de la expiracioacuten
Implementacioacutenvariable ssthreshcon una peacuterdida ssthreshse pone a 12 de cwndjusto antes de la peacuterdida
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-99
Resumen Control de congestioacuten TCP
expiracioacutenssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmitir segmento que falta
Λcwnd gt ssthresh
evitacioacuten decongestion
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmitir nuevo(s) segmento(s) seguacuten se pueda
ACK nuevo
dupACKcount++ACK duplicado
recuperacioacuten raacutepida
cwnd = cwnd + MSStransmitir nuevo(s) segmento(s) seguacuten se pueda
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmitir segmento que falta
dupACKcount == 3
expiracioacutenssthresh = cwnd2
cwnd = 1 dupACKcount = 0
retransmitir segmento que faltassthresh= cwnd2
cwnd = ssthresh + 3retransmitir segmento que falta
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
ACK nuevo
arranque lento
expiracioacutenssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmitir segmento que falta
cwnd = cwnd+MSSdupACKcount = 0transmitir nuevo(s) segmento(s) seguacuten se pueda
ACK nuevodupACKcount++ACK duplicado
Λcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NewACK
NewACK
NewACK
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-100
eficiencia de TCP
iquestcuaacutel es la tasa media de TCP en funcioacuten del tamantildeo de ventana y RTT
ignorar el arranque raacutepidosea W el tamantildeo de la ventana cuando ocurre una peacuterdida
cuando la ventana es W la tasa es WRTTjusto tras la peacuterdida la ventana pasa a W2 y la tasa a W2RTTla tasa media es 075 WRTT
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-101
Futuros de TCP TCP sobre ldquotubos largos y gruesosrdquo
ejemplo segmentos de 1500 bytes RTT 100ms se quiere tasa de 10 Gbps requiere tamantildeo de ventana W = 83333 segmentos en traacutensitotasa de transferencia en funcioacuten de la tasa de peacuterdidas
L = 210-10 iexcliexcluna tasa de peacuterdidas muy bajanuevas versiones de TCP para alta velocidad
LRTTMSSsdot221
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-102
objetivo de equidad si K sesiones TCP comparten el mismo enlace cuello de botella de ancho de banda R cada uno deberiacutea tener una tasa media de RK
conexioacuten TCP 1
router cuello de botella
capacidad Rconexioacuten TCP 2
Equidad en TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-103
iquestPor queacute es equitativoTCP2 sesiones que compiten
el incremento aditivo da una pendiente de 1 en los incrementosel decremento multiplicativo decrementa la tasa proporcionalmente
R
R
reparto equitativo del ancho de banda
tasa de transferencia
de la conexioacuten 1
tasa
de
tran
sfer
enc i
a
de la
con
exioacute
n 2
evitacioacuten de congestioacuten incremento aditivopeacuterdida decrementar ventana en un factor de 2evitacioacuten de congestioacuten incremento aditivo
peacuterdida decrementar ventana en un factor de 2
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-104
Equidad (maacutes)Equidad y UDP
las aplicaciones multimedia a menudo no usan TCP
no quieren que la tasa de transf se limite por el control de congestioacuten
por eso usan UDPenviacutean audiovideo a tasa constante toleran peacuterdida de paquetes
Equidad y conexiones TCP paralelasnada impide a una aplicacioacuten abrir conexiones paralelas entre 2 hostslos navegadores lo hacenejemplo enlace de tasa R permite 9 conexiones
una aplicacioacuten pide 1 TCP obtiene tasa R10una aplicacioacuten pide 11 TCPs iexcliexclobtiene tasa R2
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-105
Capiacutetulo 3 Resumenprincipios detraacutes de los servicios de la capa de transporte
multiplexacioacuten desmultiplexacioacutentransferencia de datos fiablecontrol de flujocontrol de congestioacuten
instanciacioacuten e implementacioacuten en Internet
UDPTCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-43
rdt30 funcionando
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-44
rdt30 funcionando
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-45
Rendimiento del rdt30
rdt30 funciona pero el rendimiento es muy malopej enlace de 1Gbs 15ms retardo prop paquete 8k bits
si RTT=30 ms 1 paquete de 1KB cada 30 sg -gt 33KBs de 1Gbpsiexcliexclel protocolo de red limita el uso de los recursos fiacutesicos
dosmicrosegun 8bps10bits 8000
9 ===RLdtrans
U emisor utilizacioacuten ndash fraccioacuten de tiempo que el emisor estaacuteocupado emitiendo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-46
rdt30 funcionamiento de parada y espera
primer bit transmitido t = 0
emisor receptor
RTT
uacuteltimo bit transmitido t = L R
llega primer bitllega uacuteltimo bit enviar ACK
llega ACK enviar siguiente paquete t = RTT + L R
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-47
Protocolos segmentados (en cadena)segmentar el emisor permite que haya muacuteltiples
paquetes ldquoen caminordquo pendientes de ACKel rango de nordm de secuencia debe aumentarsehay que antildeadir buacutefferes en el emisor yo el receptor
hay dos formas geneacutericas de protocolos segmentados retroceder N (lsquogo-Back-Nrsquo) y repeticioacuten selectiva (lsquoselective repeatrsquo)
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-48
segmentacioacuten uso mejorado
primer bit transmitido t = 0
emisor receptor
RTT
uacuteltimo bit transmitido t = L R
llega el primer bitllega uacuteltimo bit 1er paquete enviar ACK
llega ACK enviar siguiente paquete t = RTT + L R
llega uacuteltimo bit 2ordm paquete enviar ACKllega uacuteltimo bit 3er paquete enviar ACK
iexcliexclMejora en la utilizacioacuten en un factor de 3
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-49
Protocolos segmentados
Retroceder N vista globalel emisor puede tener hasta N paquetes pendientes de ACKel receptor soacutelo enviacutea ACKs acumulativos
no lo enviacutea para un paquete si hay una laguna
el emisor tiene un temporizador para el paquete maacutes antiguo sin ACK
si llega a 0 retransmitir paquetes sin ACK
Repeticioacuten selectiva vista globalel emisor puede tener hasta N paquetes pendientes de ACKel receptor enviacutea ACK para cada paqueteel emisor mantiene un temporizador para cada paquete sin ACK
si llega a 0 retransmitir soacutelo paquete sin ACK
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-50
Retroceder N (GBN)Emisor
nordm de secuencia de k bits en cabecera del paqueteventana de hasta N paquetes consecutivos sin ACK
ACK(n) ACK para todos los paquetes hasta nordm sec n (inclusive) ldquoACK acumulativordquo
puede recibir ACKs duplicados (ver receptor)temporizador para cada paquete en camino timeout(n) retransmitir paquete n y todos los de mayor nordm sec en la ventanaRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-51
GBN MEF ampliada para el emisor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-52
GBN MEF ampliada del receptor
Enviar ACK para paquete correcto con mayor nordm de secuencia en orden
se pueden generar ACKs duplicadossoacutelo hay que recordar expectedseqnum
paquete fuera de ordendescartar (no se guarda) -gt iexcliexclno hay buffer en el receptorReenviar ACK para paquete con mayor nordm secuencia en orden
Wait
udt_send(sndpkt)default
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(expectedseqnumACKchksum)
Λ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-53
GBN enfunciona-miento
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-54
Repeticioacuten selectiva (SR)
el receptor enviacutea ACK individual para cada paquete correcto
se deben guardar los paquetes en buffers seguacuten sea necesario para entregarlos en orden a la capa superior
el emisor soacutelo reenviacutea paquetes para los que no reciba ACK
un temporizador para cada paquete en caminoventana de emisor
hay N nordm de secuencia consecutivosde nuevo limita nordmsec de los paquetes en camino
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-55
Repeticioacuten selectiva ventanas de emisor y receptor
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-56
Repeticioacuten selectiva
datos de arribasi sig nordm sec en la ventana vaciacuteo enviar paquete
timeout(n)reenviar paquete n reiniciar temporizador
ACK(n) en [sendbasesendbase+N]
marcar paquete n como recibidosi n era el paquete sin ACK con menor nordm sec avanzar el inicio de la ventana al siguiente nordm sec sin ACK
emisorpaquete n en [rcvbase rcvbase+N-1]
enviar ACK(n)fuera de orden guardar en bufferen orden entregar (junto con los previamente guardados por fuera de orden) avanzar ventana al siguiente pendiente de recibir
paquete n en [rcvbase-Nrcvbase-1]
ACK(n)otro caso
ignorar
receptor
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-57
repeticioacuten selectiva en funcionamiento
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-58
Repeticioacuten selectivadilema
Ejemplo nos sec 0 1 2 3tamantildeo ventana=3
iexclel receptor no ve diferencia entre ambos casosen (a) pasa datos repetidos por nuevos de forma incorrecta
P iquestrelacioacuten entre nordm de nos de secuencia vaacutelidos y tamantildeo de la ventanaRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-59
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacuten transferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-60
TCP Visioacuten global RFCs 793 1122 1323 2018 2581
datos full duplexflujo de datos bidireccional en la misma conexioacutenMSS Maacuteximo tamantildeo de segmento (lsquomaximum segment sizersquo)
orientado a conexioacutenestablecimiento conexioacuten (intercambio de mensajes) inicializa estados antes del intercambio de datos
con control de flujoel emisor no satura al receptor
punto a puntoun emisor un receptor
flujo de bytes fiable en orden
no hay ldquoliacutemites de mensajerdquosegmentado
el control de flujo y congestioacuten de TCP fijan el tamantildeo de la ventanabuffers de emisioacuten y recepcioacuten
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-61
estructura del segmento TCP
nordm puerto origen nordm puerto dest
32 bits
datosaplicacioacuten
(long variable)
nordm secuencianordm ACK
ventana recepcioacutenpuntero datos urgchecksum
FSRPAUlong encab
notused
Opciones (long variable)
URG datos urgentes(la aplicacioacuten debe
hacer algo)ACK nordm ACK
vaacutelidoPSH push enviar
estos datos ya a laaplicacioacuten
(el programador no puede manejarlo)
RST SYN FINestab conexioacuten
(comandos estab cerrar)
nordm bytes que el receptorestaacute dispuestoa aceptar
contados en bytes de datos(iexcliexclno segmentos)
checksum Internet
(como en UDP)
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
0 15 16 31
3-62
TCP nuacutems secuencia y ACKsnos secuencia
ldquonordmrdquo flujo de bytes del 1er byte de datos del segmento
ACKsnordm sec del siguiente byte esperado de la otra parteACK acumulativo
P coacutemo se tratan los segmentos fuera de orden
R la especificacioacuten de TCP no lo dice lo que haga el implementador
Host A Host B
Seq=42 ACK=79 data = lsquoCrsquo
Seq=79 ACK=43 data = lsquoCrsquo
Seq=43 ACK=80
Usuarioescribe
lsquoCrsquo
el host enviacuteaACK por ladevolucioacuten
de lsquoCrsquo
el host enviacutea ACK por lsquoCrsquodevuelve lsquoCrsquo
tiempoejemplo sencillo de telnet
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-63
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacutentransferencia de datos fiable control de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-64
TCP gestioacuten de la conexioacutenRecordatorio en TCP emisor y
receptor establecen una ldquoconexioacutenrdquo antes de intercambiar segmentos de datosinicializar variables TCP
nos de secuenciabuffers info de control de flujo (pej RcvWindow)
el cliente inicia la conexioacutenSocket clientSocket = new Socket(rdquonombrehostrdquonumero puerto)
el servidor el cliente contacta con eacutelSocket connectionSocket = welcomeSocketaccept()
Establecimiento en 3 pasos
Paso 1 el cliente envia segmento SYN al servidor
especifica nordm secuencia inicialsin datos
Paso 2 el servidor recibe SYN responde con segmento SYNACK
el servidor crea buffersespecifica el nordm sec inicial del servidor
Paso 3 el cliente recibe SYNACK responde con segmento ACK que puede contener datos
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-65
TCP gestioacuten de la conexioacuten (cont)
Cerrar una conexioacuten
el cliente cierra el socketclientSocketclose()
Paso 1 el sistema terminal del cliente enviacutea el segmento de control TCP FIN al servidor
Paso 2 el servidor recibe FIN responde con ACK Cierra la conexioacuten enviacutea FIN
cliente
FIN
servidor
ACK
ACK
FIN
cerrar
cerrar
cerrado
espe
ra
tem
pori
zada
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-66
TCP gestioacuten de la conexioacuten (cont)
Paso 3 el cliente recibe FIN responde con ACK
entra en ldquoespera temporizadardquo ndashresponderaacute con ACK a los FINs que reciba
Paso 4 el servidor recibe ACK Conexioacuten cerrada
Nota con una pequentildea modificacioacuten puede manejar FINs simultaacuteneos
cliente
FIN
servidor
ACK
ACK
FIN
cerrando
cerrando
cerrada
espe
ra
tem
pori
zada
cerrada
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-67
TCP gestioacuten de la conexioacuten (cont)
ciclo de vidade cliente TCP
ciclo de vidade servidor TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-68
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacutentransferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-69
TCP transferencia de datos fiable
TCP crea servicio rdtsobre el servicio no fiable de IPsegmentos en cadenaacks acumulativosTCP usa un uacutenico temporizador de retransmisioacuten
retransmisiones disparadas por
eventos de temporizador a ceroACKs duplicados
inicialmente considerar emisor TCP simplificado
ignorar ACKs duplicadosignorar control de flujo congestioacuten de flujo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-70
eventos de emisioacuten TCPdatos recibidos de la
aplicacioacutencrear segmento con nordmsecnordm sec es el nordm del 1er byte del segmento dentro del flujo de bytesiniciar temporizador si no lo estaacuteintervalo de expiracioacuten TimeOutInterval
lsquotimeoutrsquo (expiracioacuten)retransmitir segmento que la provocoacutereiniciar temporizador
ACK recibidosi se refiere a segmentos sin ACK previo
actualizar aquellos a los que les falta el ACKiniciar temporizador si hay segmentos pendientes
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-71
emisor TCP (simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (siempre) switch(suceso)
suceso datos recibidos de la aplicacioacuten de capa superiorcrear segmento TCP con nordm sec NextSeqNum if (temporizador no en marcha)
iniciar temporizadorpasar segmento a IP NextSeqNum = NextSeqNum + length(data)
suceso temporizador expiroacuteretransmitir segmento sin ACK con el menor nordm sec iniciar contador
suceso recibido ACK con valor del campo ACK == yif (y gt SendBase)
SendBase = yif (hay segmentos sin ACK)
iniciar temporizador
fin de loop siempre
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-72
TCP situaciones para retransmisioacutenHost A
Seq=100 20 bytes data
ACK=100
tiempotimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq=
92 t
imeo
ut
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
peacuterdida
tim
eout
situacioacuten de ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tiempo
Seq=
92 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
SendBase= 100
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-73
TCP situaciones para retransmisioacuten (maacutes)Host A
Seq=92 8 bytes data
ACK=100
peacuterdida
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
tiempo
SendBase= 120
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-74
generacioacuten de ACK en TCP [RFC 1122 RFC 2581]
Evento en Receptor
Llegada de segmento en orden connordm sec esperado Todos hasta elnordm sec esperado ya tienen ACK
Llegada de segmento en orden connordm sec esperado Hay otro seg en orden esperando transm de ACK
Llegada de nordm de sec fuera de orden mayor que el esperado Detectada laguna
Llegada de segmento que comple-ta parcialmente una laguna
Receptor TCP accioacuten
ACK retardado Esperar hasta 500msal siguiente segmento Si no llega enviarACK
Inmediatamente enviar ACK acumulativopara ambos segmentos
Inmediatamente enviar ACK duplicadoindicando nordm sec del siguiente byte esperado
Inmediatamente enviar ACK suponiendo que el segmento empieza en el liacutemite inferior de la laguna
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-75
Retransmisioacuten raacutepida
periacuteodo de expiracioacuten a menudo relativamente largo
largo retardo antes de reenviar el paquete perdido
se detectan segmentos perdidos por ACKs repetidos
el emisor a menudo enviacutea varios segmentos seguidossi se pierde un segmento seguramente habraacute varios ACKs repetidos
si el emisor recibe 3 ACKs por los mismos datos supone que el segmento de despueacutes de los datos con ACK se perdioacute
retransmisioacuten raacutepida reenviar segmento antes de que expire el temporizador
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-76
Host A
tim
eout
Host B
tiempo
X
reenviar 2ordm segmento
Figura 337 Reenviar segmento tras triple ACKRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-77
suceso recibido ACK con campo ACK con valor == s if (s gt SendBase)
SendBase = sif (hay segmentos pendientes de ACK)
iniciar temporizador
else incrementar cuenta de ACKs duplicados recibidos para s if (cuenta de ACKs duplicados para s == 3)
reenviar segmento con nordm sec s
Algoritmo de retransmisioacuten raacutepida
un ACK duplicado paraun segmento ya con ACK
retransmisioacuten raacutepida
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
Algoritmo de Nagle [RFC896]
Las conexiones interactivas (ssh telnet) suelen enviar segmentos con muy pocos datos (uno dos bytes)
iexclPeacuterdida de eficienciaEs maacutes interesante reunir varios datos procedentes de la aplicacioacuten y mandarlos todos juntosEl algoritmo de Nagle indica que no se enviacuteen nuevos segmentos mientras queden reconocimientos pendientes
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte 3-78
Algoritmo de Nagle [RFC896]
Evento en emisor
Llegada de datos de la aplicacioacutenHay ACKs pendientes
Llegada de un ACK pendiente
Llegada de datos de la aplicacioacutenNo hay ACKs pendientes
Llegada de datos de la aplicacioacutenNo queda sitio en el buffer delemisor
Accioacuten en emisor
Acumular datos en el buffer del emisor
Inmediatamente enviar todos los segmen-tos acumulados en buffer
Inmediatamente enviar datos al receptor
Inmediatamente enviar datos si lo permi-te la ventana aunque no se hayan reci-bido ACKs previos
Capa de Transporte 3-79Rauacutel Duraacuten Nacho Peacuterez v14
3-80
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacutentransferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-81
en TCP el receptor tiene un buffer de recepcioacuten
servicio de equilibrado de velocidad equilibrar la velocidad de enviacuteo a la de la aplicacioacuten vaciando el buffer de recepcioacutenla aplicacioacuten puede ser
lenta leyendo del buffer
el emisor no saturaraacuteel buffer del receptor
a base de enviar mucho muy seguido
control de flujoTCP Control de flujo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-82
TCP control de flujo coacutemo funciona
(suponer que el receptor TCP descarta segmentos fuera de orden)hay sitio en el buffer
RcvWindow = RcvBuffer -[LastByteRcvd - LastByteRead]
el receptor anuncia el espacio libre incluyendo el valor RcvWindow en los segmentosel emisor limita los datos sin ACK a RcvWindow
garantiza que el buffer de recepcioacuten no se desborda
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-83
TCP lsquoRound Trip Timersquo y lsquoTimeoutrsquo
P iquestcoacutemo fijar el tiempo de lsquotimeoutrsquo de TCPmaacutes que RTT
pero RTT variacuteasi demasiado corto lsquotimeoutrsquo prematuro
retransmisiones innecesarias
si demasiado largo reaccioacuten lenta a peacuterdidas
P iquestcoacutemo estimar RTTSampleRTT tiempo medido desde transmisioacuten de un segmento hasta recepcioacuten de ACK
ignorar retransmisionesSampleRTT variaraacute queremos un valor maacutes ldquoestablerdquo
promedio de varias mediciones recientes no el valor actual
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-84
TCP lsquoRound Trip Timersquo y lsquoTimeoutrsquo
EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT
media moacutevil ponderada exponencialla influencia de una muestra pasada decrece exponencialmentevalor tiacutepico α = 0125
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-85
Ejemplo de estimacioacuten de RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106time (seconnds)
RTT
(mill
iseco
nds)
SampleRTT Estimated RTT
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-86
TCP lsquoRound Trip Timersquo y lsquoTimeoutrsquoFijar el tiempo de expiracioacuten (lsquotimeoutrsquo)
EstimatedRTT maacutes ldquomargen de seguridadrdquogran variacioacuten en EstimatedRTT -gt mayor margen de seguridad
primero estimar cuaacutento SampleRTT se desviacutea de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-β)DevRTT +β|SampleRTT-EstimatedRTT|
(tiacutepicamente β = 025)
Entonces fijar el tiempo de expiracioacuten
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
Algoritmo de Karn
Si recibimos el reconocimiento de un paquete retransmitido no tenemos forma de saber a cuaacutel de las retransmisiones corresponde ese reconocimientoPor ello se ignoran los paquetes retransmitidos a la hora de computar el RTTEste procedimiento se denomina algoritmo de Karn
3-87Capa de TransporteRauacutel Duraacuten Nacho Peacuterez v14
3-88
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacuten transferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-89
Principios de control de la congestioacuten
Congestioacuteninformal ldquodemasiadas fuentes enviando demasiados datos demasiado deprisa para que la red lo pueda asimilarrdquoiexcliexcldiferente a control de flujosiacutentomas
paquetes perdidos (desbordamiento de bufferes en los routers)grandes retardos (encolado en los bufferes de los routers)iexcliexclun problema ldquotop-10rdquo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-90
Formas de abordar el control de congestioacuten
control de terminal a terminalno hay realimentacioacuten expliacutecita de la redla congestioacuten se deduce por el retardo y las peacuterdidas observadas por los terminaleseste es el meacutetodo de TCP
control asistido por la redlos routers proporcionan realimentacioacuten a los terminales
un bit que indica la congestioacuten (SNA DECnet TCPIP ECN ATM)indicacioacuten expliacutecita de la tasa a la que el emisor deberiacutea enviar
Dos formas principales de abordarla
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-91
Caso de estudio servicio ABR de las redes ATM
ABR lsquoAvailable Bit Ratersquo(Tasa de bits disponible)
ldquoservicio elaacutesticordquosi la ruta del emisor ldquoinfra-cargadardquo
el emisor deberiacutea usar el ancho de banda disponible
si la ruta del emisor estaacutecongestionada
el emisor se limita a la tasa garantizada
ceacutelulas RM (lsquoresource managementrsquo gestioacuten de recursos) enviado por el emisor intercalado con las celdas de datoslos bits en las celdas RM se rellenan por los switches (ldquoasistido por la redrdquo)
bit NI no hay mejora en la velocidad (congestioacuten suave)bit CI indica congestioacuten
las celdas RM se devuelven al emisor por el receptor sin modificar
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-92
Caso de estudio servicio ABR de las redes ATM
campo ER (lsquoexplicit ratersquo tasa expliacutecita) de 2 bytes en celda RM
un switch congestionado puede rebajar el valor ERla tasa del emisor es asiacute la maacutexima que puede aguantar la ruta
bit EFCI en celdas de datos se pone a 1 en switch congestionado
si la celda que precede a la RM tiene EFCI a 1 el emisor pone a1 el bit CI en la celda RM devueltaRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-93
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacuten transferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-94
control de congestioacuten en TCP incremento aditivo decremento multiplicativo
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
filosofiacutea incrementar la tasa de transmisioacuten (tamantildeo de la ventana) sondeando el ancho de banda accesible hasta que hay peacuterdidas
incremento aditivo incrementar cwnd en 1 MSS cada RTT hasta que haya peacuterdidasdecremento multiplicativo dividir cwnd por 2 cuando las haya
tiempo
cwnd
tam
antildeo
de la
ven
tana
co
n co
nges
tioacuten
diente de sierra sondeo del ancho
de banda
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-95
Control de congestioacuten TCP detalles
el emisor limita la transmisioacutenLastByteSent-LastByteAcked
le cwnd
lsquogrosso modorsquo
cwnd es dinaacutemica funcioacuten de la congestioacuten de la red percibida
iquestCoacutemo percibe el emisor la congestioacutenevento de peacuterdida = expiracioacuten o 3 ACKs duplicadosel emisor reduce la tasa (cwnd) tras un evento de peacuterdida
3 mecanismosAIMDarranque lentoconservador tras eventos de expiracioacuten
tasa = cwndRTT Bytess
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-96
TCP Arranque lento
cuando se inicia la conexioacuten la tasa se incrementa exponencialmente hasta la primera peacuterdida
inicialmente cwnd = 1 MSScwnd se dobla cada RTTse incrementa cwnd con cada ACK recibido
resumen la tasa inicial es baja pero crece exponencialmente raacutepido
Host A
un segmento
RTT
Host B
tiempo
2 segmentos
4 segmentos
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-97
Refinado deduccioacuten de peacuterdidastras 3 ACKs duplicados
cwnd se divide por 2la ventana ya crece linealmente
pero tras una expiracioacutencwnd en cambio se pone a 1 MSS la ventana entonces crece exponencialmentehasta un umbral luego linealmente
3 ACKs duplicados indica que la red es capaz de entregar algunos segmentos
expiracioacuten indica una situacioacuten de congestioacuten ldquomaacutes alarmanterdquo
Filosofiacutea
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-98
RefinadoP iquestcuaacutendo deberiacutea
pasarse de incremento exponencial a lineal
R cuando cwnd llegue a 12 de su valor antes de la expiracioacuten
Implementacioacutenvariable ssthreshcon una peacuterdida ssthreshse pone a 12 de cwndjusto antes de la peacuterdida
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-99
Resumen Control de congestioacuten TCP
expiracioacutenssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmitir segmento que falta
Λcwnd gt ssthresh
evitacioacuten decongestion
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmitir nuevo(s) segmento(s) seguacuten se pueda
ACK nuevo
dupACKcount++ACK duplicado
recuperacioacuten raacutepida
cwnd = cwnd + MSStransmitir nuevo(s) segmento(s) seguacuten se pueda
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmitir segmento que falta
dupACKcount == 3
expiracioacutenssthresh = cwnd2
cwnd = 1 dupACKcount = 0
retransmitir segmento que faltassthresh= cwnd2
cwnd = ssthresh + 3retransmitir segmento que falta
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
ACK nuevo
arranque lento
expiracioacutenssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmitir segmento que falta
cwnd = cwnd+MSSdupACKcount = 0transmitir nuevo(s) segmento(s) seguacuten se pueda
ACK nuevodupACKcount++ACK duplicado
Λcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NewACK
NewACK
NewACK
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-100
eficiencia de TCP
iquestcuaacutel es la tasa media de TCP en funcioacuten del tamantildeo de ventana y RTT
ignorar el arranque raacutepidosea W el tamantildeo de la ventana cuando ocurre una peacuterdida
cuando la ventana es W la tasa es WRTTjusto tras la peacuterdida la ventana pasa a W2 y la tasa a W2RTTla tasa media es 075 WRTT
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-101
Futuros de TCP TCP sobre ldquotubos largos y gruesosrdquo
ejemplo segmentos de 1500 bytes RTT 100ms se quiere tasa de 10 Gbps requiere tamantildeo de ventana W = 83333 segmentos en traacutensitotasa de transferencia en funcioacuten de la tasa de peacuterdidas
L = 210-10 iexcliexcluna tasa de peacuterdidas muy bajanuevas versiones de TCP para alta velocidad
LRTTMSSsdot221
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-102
objetivo de equidad si K sesiones TCP comparten el mismo enlace cuello de botella de ancho de banda R cada uno deberiacutea tener una tasa media de RK
conexioacuten TCP 1
router cuello de botella
capacidad Rconexioacuten TCP 2
Equidad en TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-103
iquestPor queacute es equitativoTCP2 sesiones que compiten
el incremento aditivo da una pendiente de 1 en los incrementosel decremento multiplicativo decrementa la tasa proporcionalmente
R
R
reparto equitativo del ancho de banda
tasa de transferencia
de la conexioacuten 1
tasa
de
tran
sfer
enc i
a
de la
con
exioacute
n 2
evitacioacuten de congestioacuten incremento aditivopeacuterdida decrementar ventana en un factor de 2evitacioacuten de congestioacuten incremento aditivo
peacuterdida decrementar ventana en un factor de 2
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-104
Equidad (maacutes)Equidad y UDP
las aplicaciones multimedia a menudo no usan TCP
no quieren que la tasa de transf se limite por el control de congestioacuten
por eso usan UDPenviacutean audiovideo a tasa constante toleran peacuterdida de paquetes
Equidad y conexiones TCP paralelasnada impide a una aplicacioacuten abrir conexiones paralelas entre 2 hostslos navegadores lo hacenejemplo enlace de tasa R permite 9 conexiones
una aplicacioacuten pide 1 TCP obtiene tasa R10una aplicacioacuten pide 11 TCPs iexcliexclobtiene tasa R2
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-105
Capiacutetulo 3 Resumenprincipios detraacutes de los servicios de la capa de transporte
multiplexacioacuten desmultiplexacioacutentransferencia de datos fiablecontrol de flujocontrol de congestioacuten
instanciacioacuten e implementacioacuten en Internet
UDPTCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-49
Protocolos segmentados
Retroceder N vista globalel emisor puede tener hasta N paquetes pendientes de ACKel receptor soacutelo enviacutea ACKs acumulativos
no lo enviacutea para un paquete si hay una laguna
el emisor tiene un temporizador para el paquete maacutes antiguo sin ACK
si llega a 0 retransmitir paquetes sin ACK
Repeticioacuten selectiva vista globalel emisor puede tener hasta N paquetes pendientes de ACKel receptor enviacutea ACK para cada paqueteel emisor mantiene un temporizador para cada paquete sin ACK
si llega a 0 retransmitir soacutelo paquete sin ACK
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-50
Retroceder N (GBN)Emisor
nordm de secuencia de k bits en cabecera del paqueteventana de hasta N paquetes consecutivos sin ACK
ACK(n) ACK para todos los paquetes hasta nordm sec n (inclusive) ldquoACK acumulativordquo
puede recibir ACKs duplicados (ver receptor)temporizador para cada paquete en camino timeout(n) retransmitir paquete n y todos los de mayor nordm sec en la ventanaRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-51
GBN MEF ampliada para el emisor
Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])hellipudt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum lt base+N) sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)udt_send(sndpkt[nextseqnum])if (base == nextseqnum)
start_timernextseqnum++
elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)
stop_timerelsestart_timer
rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) ampamp corrupt(rcvpkt)
Λ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-52
GBN MEF ampliada del receptor
Enviar ACK para paquete correcto con mayor nordm de secuencia en orden
se pueden generar ACKs duplicadossoacutelo hay que recordar expectedseqnum
paquete fuera de ordendescartar (no se guarda) -gt iexcliexclno hay buffer en el receptorReenviar ACK para paquete con mayor nordm secuencia en orden
Wait
udt_send(sndpkt)default
rdt_rcv(rcvpkt)ampamp notcurrupt(rcvpkt)ampamp hasseqnum(rcvpktexpectedseqnum)
extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(expectedseqnumACKchksum)udt_send(sndpkt)expectedseqnum++
expectedseqnum=1sndpkt = make_pkt(expectedseqnumACKchksum)
Λ
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-53
GBN enfunciona-miento
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-54
Repeticioacuten selectiva (SR)
el receptor enviacutea ACK individual para cada paquete correcto
se deben guardar los paquetes en buffers seguacuten sea necesario para entregarlos en orden a la capa superior
el emisor soacutelo reenviacutea paquetes para los que no reciba ACK
un temporizador para cada paquete en caminoventana de emisor
hay N nordm de secuencia consecutivosde nuevo limita nordmsec de los paquetes en camino
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-55
Repeticioacuten selectiva ventanas de emisor y receptor
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-56
Repeticioacuten selectiva
datos de arribasi sig nordm sec en la ventana vaciacuteo enviar paquete
timeout(n)reenviar paquete n reiniciar temporizador
ACK(n) en [sendbasesendbase+N]
marcar paquete n como recibidosi n era el paquete sin ACK con menor nordm sec avanzar el inicio de la ventana al siguiente nordm sec sin ACK
emisorpaquete n en [rcvbase rcvbase+N-1]
enviar ACK(n)fuera de orden guardar en bufferen orden entregar (junto con los previamente guardados por fuera de orden) avanzar ventana al siguiente pendiente de recibir
paquete n en [rcvbase-Nrcvbase-1]
ACK(n)otro caso
ignorar
receptor
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-57
repeticioacuten selectiva en funcionamiento
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-58
Repeticioacuten selectivadilema
Ejemplo nos sec 0 1 2 3tamantildeo ventana=3
iexclel receptor no ve diferencia entre ambos casosen (a) pasa datos repetidos por nuevos de forma incorrecta
P iquestrelacioacuten entre nordm de nos de secuencia vaacutelidos y tamantildeo de la ventanaRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-59
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacuten transferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-60
TCP Visioacuten global RFCs 793 1122 1323 2018 2581
datos full duplexflujo de datos bidireccional en la misma conexioacutenMSS Maacuteximo tamantildeo de segmento (lsquomaximum segment sizersquo)
orientado a conexioacutenestablecimiento conexioacuten (intercambio de mensajes) inicializa estados antes del intercambio de datos
con control de flujoel emisor no satura al receptor
punto a puntoun emisor un receptor
flujo de bytes fiable en orden
no hay ldquoliacutemites de mensajerdquosegmentado
el control de flujo y congestioacuten de TCP fijan el tamantildeo de la ventanabuffers de emisioacuten y recepcioacuten
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-61
estructura del segmento TCP
nordm puerto origen nordm puerto dest
32 bits
datosaplicacioacuten
(long variable)
nordm secuencianordm ACK
ventana recepcioacutenpuntero datos urgchecksum
FSRPAUlong encab
notused
Opciones (long variable)
URG datos urgentes(la aplicacioacuten debe
hacer algo)ACK nordm ACK
vaacutelidoPSH push enviar
estos datos ya a laaplicacioacuten
(el programador no puede manejarlo)
RST SYN FINestab conexioacuten
(comandos estab cerrar)
nordm bytes que el receptorestaacute dispuestoa aceptar
contados en bytes de datos(iexcliexclno segmentos)
checksum Internet
(como en UDP)
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
0 15 16 31
3-62
TCP nuacutems secuencia y ACKsnos secuencia
ldquonordmrdquo flujo de bytes del 1er byte de datos del segmento
ACKsnordm sec del siguiente byte esperado de la otra parteACK acumulativo
P coacutemo se tratan los segmentos fuera de orden
R la especificacioacuten de TCP no lo dice lo que haga el implementador
Host A Host B
Seq=42 ACK=79 data = lsquoCrsquo
Seq=79 ACK=43 data = lsquoCrsquo
Seq=43 ACK=80
Usuarioescribe
lsquoCrsquo
el host enviacuteaACK por ladevolucioacuten
de lsquoCrsquo
el host enviacutea ACK por lsquoCrsquodevuelve lsquoCrsquo
tiempoejemplo sencillo de telnet
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-63
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacutentransferencia de datos fiable control de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-64
TCP gestioacuten de la conexioacutenRecordatorio en TCP emisor y
receptor establecen una ldquoconexioacutenrdquo antes de intercambiar segmentos de datosinicializar variables TCP
nos de secuenciabuffers info de control de flujo (pej RcvWindow)
el cliente inicia la conexioacutenSocket clientSocket = new Socket(rdquonombrehostrdquonumero puerto)
el servidor el cliente contacta con eacutelSocket connectionSocket = welcomeSocketaccept()
Establecimiento en 3 pasos
Paso 1 el cliente envia segmento SYN al servidor
especifica nordm secuencia inicialsin datos
Paso 2 el servidor recibe SYN responde con segmento SYNACK
el servidor crea buffersespecifica el nordm sec inicial del servidor
Paso 3 el cliente recibe SYNACK responde con segmento ACK que puede contener datos
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-65
TCP gestioacuten de la conexioacuten (cont)
Cerrar una conexioacuten
el cliente cierra el socketclientSocketclose()
Paso 1 el sistema terminal del cliente enviacutea el segmento de control TCP FIN al servidor
Paso 2 el servidor recibe FIN responde con ACK Cierra la conexioacuten enviacutea FIN
cliente
FIN
servidor
ACK
ACK
FIN
cerrar
cerrar
cerrado
espe
ra
tem
pori
zada
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-66
TCP gestioacuten de la conexioacuten (cont)
Paso 3 el cliente recibe FIN responde con ACK
entra en ldquoespera temporizadardquo ndashresponderaacute con ACK a los FINs que reciba
Paso 4 el servidor recibe ACK Conexioacuten cerrada
Nota con una pequentildea modificacioacuten puede manejar FINs simultaacuteneos
cliente
FIN
servidor
ACK
ACK
FIN
cerrando
cerrando
cerrada
espe
ra
tem
pori
zada
cerrada
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-67
TCP gestioacuten de la conexioacuten (cont)
ciclo de vidade cliente TCP
ciclo de vidade servidor TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-68
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacutentransferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-69
TCP transferencia de datos fiable
TCP crea servicio rdtsobre el servicio no fiable de IPsegmentos en cadenaacks acumulativosTCP usa un uacutenico temporizador de retransmisioacuten
retransmisiones disparadas por
eventos de temporizador a ceroACKs duplicados
inicialmente considerar emisor TCP simplificado
ignorar ACKs duplicadosignorar control de flujo congestioacuten de flujo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-70
eventos de emisioacuten TCPdatos recibidos de la
aplicacioacutencrear segmento con nordmsecnordm sec es el nordm del 1er byte del segmento dentro del flujo de bytesiniciar temporizador si no lo estaacuteintervalo de expiracioacuten TimeOutInterval
lsquotimeoutrsquo (expiracioacuten)retransmitir segmento que la provocoacutereiniciar temporizador
ACK recibidosi se refiere a segmentos sin ACK previo
actualizar aquellos a los que les falta el ACKiniciar temporizador si hay segmentos pendientes
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-71
emisor TCP (simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (siempre) switch(suceso)
suceso datos recibidos de la aplicacioacuten de capa superiorcrear segmento TCP con nordm sec NextSeqNum if (temporizador no en marcha)
iniciar temporizadorpasar segmento a IP NextSeqNum = NextSeqNum + length(data)
suceso temporizador expiroacuteretransmitir segmento sin ACK con el menor nordm sec iniciar contador
suceso recibido ACK con valor del campo ACK == yif (y gt SendBase)
SendBase = yif (hay segmentos sin ACK)
iniciar temporizador
fin de loop siempre
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-72
TCP situaciones para retransmisioacutenHost A
Seq=100 20 bytes data
ACK=100
tiempotimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq=
92 t
imeo
ut
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
peacuterdida
tim
eout
situacioacuten de ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tiempo
Seq=
92 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
SendBase= 100
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-73
TCP situaciones para retransmisioacuten (maacutes)Host A
Seq=92 8 bytes data
ACK=100
peacuterdida
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
tiempo
SendBase= 120
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-74
generacioacuten de ACK en TCP [RFC 1122 RFC 2581]
Evento en Receptor
Llegada de segmento en orden connordm sec esperado Todos hasta elnordm sec esperado ya tienen ACK
Llegada de segmento en orden connordm sec esperado Hay otro seg en orden esperando transm de ACK
Llegada de nordm de sec fuera de orden mayor que el esperado Detectada laguna
Llegada de segmento que comple-ta parcialmente una laguna
Receptor TCP accioacuten
ACK retardado Esperar hasta 500msal siguiente segmento Si no llega enviarACK
Inmediatamente enviar ACK acumulativopara ambos segmentos
Inmediatamente enviar ACK duplicadoindicando nordm sec del siguiente byte esperado
Inmediatamente enviar ACK suponiendo que el segmento empieza en el liacutemite inferior de la laguna
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-75
Retransmisioacuten raacutepida
periacuteodo de expiracioacuten a menudo relativamente largo
largo retardo antes de reenviar el paquete perdido
se detectan segmentos perdidos por ACKs repetidos
el emisor a menudo enviacutea varios segmentos seguidossi se pierde un segmento seguramente habraacute varios ACKs repetidos
si el emisor recibe 3 ACKs por los mismos datos supone que el segmento de despueacutes de los datos con ACK se perdioacute
retransmisioacuten raacutepida reenviar segmento antes de que expire el temporizador
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-76
Host A
tim
eout
Host B
tiempo
X
reenviar 2ordm segmento
Figura 337 Reenviar segmento tras triple ACKRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-77
suceso recibido ACK con campo ACK con valor == s if (s gt SendBase)
SendBase = sif (hay segmentos pendientes de ACK)
iniciar temporizador
else incrementar cuenta de ACKs duplicados recibidos para s if (cuenta de ACKs duplicados para s == 3)
reenviar segmento con nordm sec s
Algoritmo de retransmisioacuten raacutepida
un ACK duplicado paraun segmento ya con ACK
retransmisioacuten raacutepida
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
Algoritmo de Nagle [RFC896]
Las conexiones interactivas (ssh telnet) suelen enviar segmentos con muy pocos datos (uno dos bytes)
iexclPeacuterdida de eficienciaEs maacutes interesante reunir varios datos procedentes de la aplicacioacuten y mandarlos todos juntosEl algoritmo de Nagle indica que no se enviacuteen nuevos segmentos mientras queden reconocimientos pendientes
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte 3-78
Algoritmo de Nagle [RFC896]
Evento en emisor
Llegada de datos de la aplicacioacutenHay ACKs pendientes
Llegada de un ACK pendiente
Llegada de datos de la aplicacioacutenNo hay ACKs pendientes
Llegada de datos de la aplicacioacutenNo queda sitio en el buffer delemisor
Accioacuten en emisor
Acumular datos en el buffer del emisor
Inmediatamente enviar todos los segmen-tos acumulados en buffer
Inmediatamente enviar datos al receptor
Inmediatamente enviar datos si lo permi-te la ventana aunque no se hayan reci-bido ACKs previos
Capa de Transporte 3-79Rauacutel Duraacuten Nacho Peacuterez v14
3-80
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacutentransferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-81
en TCP el receptor tiene un buffer de recepcioacuten
servicio de equilibrado de velocidad equilibrar la velocidad de enviacuteo a la de la aplicacioacuten vaciando el buffer de recepcioacutenla aplicacioacuten puede ser
lenta leyendo del buffer
el emisor no saturaraacuteel buffer del receptor
a base de enviar mucho muy seguido
control de flujoTCP Control de flujo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-82
TCP control de flujo coacutemo funciona
(suponer que el receptor TCP descarta segmentos fuera de orden)hay sitio en el buffer
RcvWindow = RcvBuffer -[LastByteRcvd - LastByteRead]
el receptor anuncia el espacio libre incluyendo el valor RcvWindow en los segmentosel emisor limita los datos sin ACK a RcvWindow
garantiza que el buffer de recepcioacuten no se desborda
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-83
TCP lsquoRound Trip Timersquo y lsquoTimeoutrsquo
P iquestcoacutemo fijar el tiempo de lsquotimeoutrsquo de TCPmaacutes que RTT
pero RTT variacuteasi demasiado corto lsquotimeoutrsquo prematuro
retransmisiones innecesarias
si demasiado largo reaccioacuten lenta a peacuterdidas
P iquestcoacutemo estimar RTTSampleRTT tiempo medido desde transmisioacuten de un segmento hasta recepcioacuten de ACK
ignorar retransmisionesSampleRTT variaraacute queremos un valor maacutes ldquoestablerdquo
promedio de varias mediciones recientes no el valor actual
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-84
TCP lsquoRound Trip Timersquo y lsquoTimeoutrsquo
EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT
media moacutevil ponderada exponencialla influencia de una muestra pasada decrece exponencialmentevalor tiacutepico α = 0125
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-85
Ejemplo de estimacioacuten de RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106time (seconnds)
RTT
(mill
iseco
nds)
SampleRTT Estimated RTT
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-86
TCP lsquoRound Trip Timersquo y lsquoTimeoutrsquoFijar el tiempo de expiracioacuten (lsquotimeoutrsquo)
EstimatedRTT maacutes ldquomargen de seguridadrdquogran variacioacuten en EstimatedRTT -gt mayor margen de seguridad
primero estimar cuaacutento SampleRTT se desviacutea de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-β)DevRTT +β|SampleRTT-EstimatedRTT|
(tiacutepicamente β = 025)
Entonces fijar el tiempo de expiracioacuten
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
Algoritmo de Karn
Si recibimos el reconocimiento de un paquete retransmitido no tenemos forma de saber a cuaacutel de las retransmisiones corresponde ese reconocimientoPor ello se ignoran los paquetes retransmitidos a la hora de computar el RTTEste procedimiento se denomina algoritmo de Karn
3-87Capa de TransporteRauacutel Duraacuten Nacho Peacuterez v14
3-88
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacuten transferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-89
Principios de control de la congestioacuten
Congestioacuteninformal ldquodemasiadas fuentes enviando demasiados datos demasiado deprisa para que la red lo pueda asimilarrdquoiexcliexcldiferente a control de flujosiacutentomas
paquetes perdidos (desbordamiento de bufferes en los routers)grandes retardos (encolado en los bufferes de los routers)iexcliexclun problema ldquotop-10rdquo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-90
Formas de abordar el control de congestioacuten
control de terminal a terminalno hay realimentacioacuten expliacutecita de la redla congestioacuten se deduce por el retardo y las peacuterdidas observadas por los terminaleseste es el meacutetodo de TCP
control asistido por la redlos routers proporcionan realimentacioacuten a los terminales
un bit que indica la congestioacuten (SNA DECnet TCPIP ECN ATM)indicacioacuten expliacutecita de la tasa a la que el emisor deberiacutea enviar
Dos formas principales de abordarla
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-91
Caso de estudio servicio ABR de las redes ATM
ABR lsquoAvailable Bit Ratersquo(Tasa de bits disponible)
ldquoservicio elaacutesticordquosi la ruta del emisor ldquoinfra-cargadardquo
el emisor deberiacutea usar el ancho de banda disponible
si la ruta del emisor estaacutecongestionada
el emisor se limita a la tasa garantizada
ceacutelulas RM (lsquoresource managementrsquo gestioacuten de recursos) enviado por el emisor intercalado con las celdas de datoslos bits en las celdas RM se rellenan por los switches (ldquoasistido por la redrdquo)
bit NI no hay mejora en la velocidad (congestioacuten suave)bit CI indica congestioacuten
las celdas RM se devuelven al emisor por el receptor sin modificar
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-92
Caso de estudio servicio ABR de las redes ATM
campo ER (lsquoexplicit ratersquo tasa expliacutecita) de 2 bytes en celda RM
un switch congestionado puede rebajar el valor ERla tasa del emisor es asiacute la maacutexima que puede aguantar la ruta
bit EFCI en celdas de datos se pone a 1 en switch congestionado
si la celda que precede a la RM tiene EFCI a 1 el emisor pone a1 el bit CI en la celda RM devueltaRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-93
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacuten transferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-94
control de congestioacuten en TCP incremento aditivo decremento multiplicativo
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
filosofiacutea incrementar la tasa de transmisioacuten (tamantildeo de la ventana) sondeando el ancho de banda accesible hasta que hay peacuterdidas
incremento aditivo incrementar cwnd en 1 MSS cada RTT hasta que haya peacuterdidasdecremento multiplicativo dividir cwnd por 2 cuando las haya
tiempo
cwnd
tam
antildeo
de la
ven
tana
co
n co
nges
tioacuten
diente de sierra sondeo del ancho
de banda
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-95
Control de congestioacuten TCP detalles
el emisor limita la transmisioacutenLastByteSent-LastByteAcked
le cwnd
lsquogrosso modorsquo
cwnd es dinaacutemica funcioacuten de la congestioacuten de la red percibida
iquestCoacutemo percibe el emisor la congestioacutenevento de peacuterdida = expiracioacuten o 3 ACKs duplicadosel emisor reduce la tasa (cwnd) tras un evento de peacuterdida
3 mecanismosAIMDarranque lentoconservador tras eventos de expiracioacuten
tasa = cwndRTT Bytess
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-96
TCP Arranque lento
cuando se inicia la conexioacuten la tasa se incrementa exponencialmente hasta la primera peacuterdida
inicialmente cwnd = 1 MSScwnd se dobla cada RTTse incrementa cwnd con cada ACK recibido
resumen la tasa inicial es baja pero crece exponencialmente raacutepido
Host A
un segmento
RTT
Host B
tiempo
2 segmentos
4 segmentos
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-97
Refinado deduccioacuten de peacuterdidastras 3 ACKs duplicados
cwnd se divide por 2la ventana ya crece linealmente
pero tras una expiracioacutencwnd en cambio se pone a 1 MSS la ventana entonces crece exponencialmentehasta un umbral luego linealmente
3 ACKs duplicados indica que la red es capaz de entregar algunos segmentos
expiracioacuten indica una situacioacuten de congestioacuten ldquomaacutes alarmanterdquo
Filosofiacutea
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-98
RefinadoP iquestcuaacutendo deberiacutea
pasarse de incremento exponencial a lineal
R cuando cwnd llegue a 12 de su valor antes de la expiracioacuten
Implementacioacutenvariable ssthreshcon una peacuterdida ssthreshse pone a 12 de cwndjusto antes de la peacuterdida
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-99
Resumen Control de congestioacuten TCP
expiracioacutenssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmitir segmento que falta
Λcwnd gt ssthresh
evitacioacuten decongestion
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmitir nuevo(s) segmento(s) seguacuten se pueda
ACK nuevo
dupACKcount++ACK duplicado
recuperacioacuten raacutepida
cwnd = cwnd + MSStransmitir nuevo(s) segmento(s) seguacuten se pueda
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmitir segmento que falta
dupACKcount == 3
expiracioacutenssthresh = cwnd2
cwnd = 1 dupACKcount = 0
retransmitir segmento que faltassthresh= cwnd2
cwnd = ssthresh + 3retransmitir segmento que falta
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
ACK nuevo
arranque lento
expiracioacutenssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmitir segmento que falta
cwnd = cwnd+MSSdupACKcount = 0transmitir nuevo(s) segmento(s) seguacuten se pueda
ACK nuevodupACKcount++ACK duplicado
Λcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NewACK
NewACK
NewACK
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-100
eficiencia de TCP
iquestcuaacutel es la tasa media de TCP en funcioacuten del tamantildeo de ventana y RTT
ignorar el arranque raacutepidosea W el tamantildeo de la ventana cuando ocurre una peacuterdida
cuando la ventana es W la tasa es WRTTjusto tras la peacuterdida la ventana pasa a W2 y la tasa a W2RTTla tasa media es 075 WRTT
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-101
Futuros de TCP TCP sobre ldquotubos largos y gruesosrdquo
ejemplo segmentos de 1500 bytes RTT 100ms se quiere tasa de 10 Gbps requiere tamantildeo de ventana W = 83333 segmentos en traacutensitotasa de transferencia en funcioacuten de la tasa de peacuterdidas
L = 210-10 iexcliexcluna tasa de peacuterdidas muy bajanuevas versiones de TCP para alta velocidad
LRTTMSSsdot221
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-102
objetivo de equidad si K sesiones TCP comparten el mismo enlace cuello de botella de ancho de banda R cada uno deberiacutea tener una tasa media de RK
conexioacuten TCP 1
router cuello de botella
capacidad Rconexioacuten TCP 2
Equidad en TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-103
iquestPor queacute es equitativoTCP2 sesiones que compiten
el incremento aditivo da una pendiente de 1 en los incrementosel decremento multiplicativo decrementa la tasa proporcionalmente
R
R
reparto equitativo del ancho de banda
tasa de transferencia
de la conexioacuten 1
tasa
de
tran
sfer
enc i
a
de la
con
exioacute
n 2
evitacioacuten de congestioacuten incremento aditivopeacuterdida decrementar ventana en un factor de 2evitacioacuten de congestioacuten incremento aditivo
peacuterdida decrementar ventana en un factor de 2
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-104
Equidad (maacutes)Equidad y UDP
las aplicaciones multimedia a menudo no usan TCP
no quieren que la tasa de transf se limite por el control de congestioacuten
por eso usan UDPenviacutean audiovideo a tasa constante toleran peacuterdida de paquetes
Equidad y conexiones TCP paralelasnada impide a una aplicacioacuten abrir conexiones paralelas entre 2 hostslos navegadores lo hacenejemplo enlace de tasa R permite 9 conexiones
una aplicacioacuten pide 1 TCP obtiene tasa R10una aplicacioacuten pide 11 TCPs iexcliexclobtiene tasa R2
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-105
Capiacutetulo 3 Resumenprincipios detraacutes de los servicios de la capa de transporte
multiplexacioacuten desmultiplexacioacutentransferencia de datos fiablecontrol de flujocontrol de congestioacuten
instanciacioacuten e implementacioacuten en Internet
UDPTCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-55
Repeticioacuten selectiva ventanas de emisor y receptor
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-56
Repeticioacuten selectiva
datos de arribasi sig nordm sec en la ventana vaciacuteo enviar paquete
timeout(n)reenviar paquete n reiniciar temporizador
ACK(n) en [sendbasesendbase+N]
marcar paquete n como recibidosi n era el paquete sin ACK con menor nordm sec avanzar el inicio de la ventana al siguiente nordm sec sin ACK
emisorpaquete n en [rcvbase rcvbase+N-1]
enviar ACK(n)fuera de orden guardar en bufferen orden entregar (junto con los previamente guardados por fuera de orden) avanzar ventana al siguiente pendiente de recibir
paquete n en [rcvbase-Nrcvbase-1]
ACK(n)otro caso
ignorar
receptor
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-57
repeticioacuten selectiva en funcionamiento
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-58
Repeticioacuten selectivadilema
Ejemplo nos sec 0 1 2 3tamantildeo ventana=3
iexclel receptor no ve diferencia entre ambos casosen (a) pasa datos repetidos por nuevos de forma incorrecta
P iquestrelacioacuten entre nordm de nos de secuencia vaacutelidos y tamantildeo de la ventanaRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-59
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacuten transferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-60
TCP Visioacuten global RFCs 793 1122 1323 2018 2581
datos full duplexflujo de datos bidireccional en la misma conexioacutenMSS Maacuteximo tamantildeo de segmento (lsquomaximum segment sizersquo)
orientado a conexioacutenestablecimiento conexioacuten (intercambio de mensajes) inicializa estados antes del intercambio de datos
con control de flujoel emisor no satura al receptor
punto a puntoun emisor un receptor
flujo de bytes fiable en orden
no hay ldquoliacutemites de mensajerdquosegmentado
el control de flujo y congestioacuten de TCP fijan el tamantildeo de la ventanabuffers de emisioacuten y recepcioacuten
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-61
estructura del segmento TCP
nordm puerto origen nordm puerto dest
32 bits
datosaplicacioacuten
(long variable)
nordm secuencianordm ACK
ventana recepcioacutenpuntero datos urgchecksum
FSRPAUlong encab
notused
Opciones (long variable)
URG datos urgentes(la aplicacioacuten debe
hacer algo)ACK nordm ACK
vaacutelidoPSH push enviar
estos datos ya a laaplicacioacuten
(el programador no puede manejarlo)
RST SYN FINestab conexioacuten
(comandos estab cerrar)
nordm bytes que el receptorestaacute dispuestoa aceptar
contados en bytes de datos(iexcliexclno segmentos)
checksum Internet
(como en UDP)
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
0 15 16 31
3-62
TCP nuacutems secuencia y ACKsnos secuencia
ldquonordmrdquo flujo de bytes del 1er byte de datos del segmento
ACKsnordm sec del siguiente byte esperado de la otra parteACK acumulativo
P coacutemo se tratan los segmentos fuera de orden
R la especificacioacuten de TCP no lo dice lo que haga el implementador
Host A Host B
Seq=42 ACK=79 data = lsquoCrsquo
Seq=79 ACK=43 data = lsquoCrsquo
Seq=43 ACK=80
Usuarioescribe
lsquoCrsquo
el host enviacuteaACK por ladevolucioacuten
de lsquoCrsquo
el host enviacutea ACK por lsquoCrsquodevuelve lsquoCrsquo
tiempoejemplo sencillo de telnet
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-63
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacutentransferencia de datos fiable control de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-64
TCP gestioacuten de la conexioacutenRecordatorio en TCP emisor y
receptor establecen una ldquoconexioacutenrdquo antes de intercambiar segmentos de datosinicializar variables TCP
nos de secuenciabuffers info de control de flujo (pej RcvWindow)
el cliente inicia la conexioacutenSocket clientSocket = new Socket(rdquonombrehostrdquonumero puerto)
el servidor el cliente contacta con eacutelSocket connectionSocket = welcomeSocketaccept()
Establecimiento en 3 pasos
Paso 1 el cliente envia segmento SYN al servidor
especifica nordm secuencia inicialsin datos
Paso 2 el servidor recibe SYN responde con segmento SYNACK
el servidor crea buffersespecifica el nordm sec inicial del servidor
Paso 3 el cliente recibe SYNACK responde con segmento ACK que puede contener datos
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-65
TCP gestioacuten de la conexioacuten (cont)
Cerrar una conexioacuten
el cliente cierra el socketclientSocketclose()
Paso 1 el sistema terminal del cliente enviacutea el segmento de control TCP FIN al servidor
Paso 2 el servidor recibe FIN responde con ACK Cierra la conexioacuten enviacutea FIN
cliente
FIN
servidor
ACK
ACK
FIN
cerrar
cerrar
cerrado
espe
ra
tem
pori
zada
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-66
TCP gestioacuten de la conexioacuten (cont)
Paso 3 el cliente recibe FIN responde con ACK
entra en ldquoespera temporizadardquo ndashresponderaacute con ACK a los FINs que reciba
Paso 4 el servidor recibe ACK Conexioacuten cerrada
Nota con una pequentildea modificacioacuten puede manejar FINs simultaacuteneos
cliente
FIN
servidor
ACK
ACK
FIN
cerrando
cerrando
cerrada
espe
ra
tem
pori
zada
cerrada
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-67
TCP gestioacuten de la conexioacuten (cont)
ciclo de vidade cliente TCP
ciclo de vidade servidor TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-68
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacutentransferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-69
TCP transferencia de datos fiable
TCP crea servicio rdtsobre el servicio no fiable de IPsegmentos en cadenaacks acumulativosTCP usa un uacutenico temporizador de retransmisioacuten
retransmisiones disparadas por
eventos de temporizador a ceroACKs duplicados
inicialmente considerar emisor TCP simplificado
ignorar ACKs duplicadosignorar control de flujo congestioacuten de flujo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-70
eventos de emisioacuten TCPdatos recibidos de la
aplicacioacutencrear segmento con nordmsecnordm sec es el nordm del 1er byte del segmento dentro del flujo de bytesiniciar temporizador si no lo estaacuteintervalo de expiracioacuten TimeOutInterval
lsquotimeoutrsquo (expiracioacuten)retransmitir segmento que la provocoacutereiniciar temporizador
ACK recibidosi se refiere a segmentos sin ACK previo
actualizar aquellos a los que les falta el ACKiniciar temporizador si hay segmentos pendientes
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-71
emisor TCP (simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (siempre) switch(suceso)
suceso datos recibidos de la aplicacioacuten de capa superiorcrear segmento TCP con nordm sec NextSeqNum if (temporizador no en marcha)
iniciar temporizadorpasar segmento a IP NextSeqNum = NextSeqNum + length(data)
suceso temporizador expiroacuteretransmitir segmento sin ACK con el menor nordm sec iniciar contador
suceso recibido ACK con valor del campo ACK == yif (y gt SendBase)
SendBase = yif (hay segmentos sin ACK)
iniciar temporizador
fin de loop siempre
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-72
TCP situaciones para retransmisioacutenHost A
Seq=100 20 bytes data
ACK=100
tiempotimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq=
92 t
imeo
ut
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
peacuterdida
tim
eout
situacioacuten de ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tiempo
Seq=
92 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
SendBase= 100
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-73
TCP situaciones para retransmisioacuten (maacutes)Host A
Seq=92 8 bytes data
ACK=100
peacuterdida
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
tiempo
SendBase= 120
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-74
generacioacuten de ACK en TCP [RFC 1122 RFC 2581]
Evento en Receptor
Llegada de segmento en orden connordm sec esperado Todos hasta elnordm sec esperado ya tienen ACK
Llegada de segmento en orden connordm sec esperado Hay otro seg en orden esperando transm de ACK
Llegada de nordm de sec fuera de orden mayor que el esperado Detectada laguna
Llegada de segmento que comple-ta parcialmente una laguna
Receptor TCP accioacuten
ACK retardado Esperar hasta 500msal siguiente segmento Si no llega enviarACK
Inmediatamente enviar ACK acumulativopara ambos segmentos
Inmediatamente enviar ACK duplicadoindicando nordm sec del siguiente byte esperado
Inmediatamente enviar ACK suponiendo que el segmento empieza en el liacutemite inferior de la laguna
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-75
Retransmisioacuten raacutepida
periacuteodo de expiracioacuten a menudo relativamente largo
largo retardo antes de reenviar el paquete perdido
se detectan segmentos perdidos por ACKs repetidos
el emisor a menudo enviacutea varios segmentos seguidossi se pierde un segmento seguramente habraacute varios ACKs repetidos
si el emisor recibe 3 ACKs por los mismos datos supone que el segmento de despueacutes de los datos con ACK se perdioacute
retransmisioacuten raacutepida reenviar segmento antes de que expire el temporizador
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-76
Host A
tim
eout
Host B
tiempo
X
reenviar 2ordm segmento
Figura 337 Reenviar segmento tras triple ACKRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-77
suceso recibido ACK con campo ACK con valor == s if (s gt SendBase)
SendBase = sif (hay segmentos pendientes de ACK)
iniciar temporizador
else incrementar cuenta de ACKs duplicados recibidos para s if (cuenta de ACKs duplicados para s == 3)
reenviar segmento con nordm sec s
Algoritmo de retransmisioacuten raacutepida
un ACK duplicado paraun segmento ya con ACK
retransmisioacuten raacutepida
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
Algoritmo de Nagle [RFC896]
Las conexiones interactivas (ssh telnet) suelen enviar segmentos con muy pocos datos (uno dos bytes)
iexclPeacuterdida de eficienciaEs maacutes interesante reunir varios datos procedentes de la aplicacioacuten y mandarlos todos juntosEl algoritmo de Nagle indica que no se enviacuteen nuevos segmentos mientras queden reconocimientos pendientes
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte 3-78
Algoritmo de Nagle [RFC896]
Evento en emisor
Llegada de datos de la aplicacioacutenHay ACKs pendientes
Llegada de un ACK pendiente
Llegada de datos de la aplicacioacutenNo hay ACKs pendientes
Llegada de datos de la aplicacioacutenNo queda sitio en el buffer delemisor
Accioacuten en emisor
Acumular datos en el buffer del emisor
Inmediatamente enviar todos los segmen-tos acumulados en buffer
Inmediatamente enviar datos al receptor
Inmediatamente enviar datos si lo permi-te la ventana aunque no se hayan reci-bido ACKs previos
Capa de Transporte 3-79Rauacutel Duraacuten Nacho Peacuterez v14
3-80
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacutentransferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-81
en TCP el receptor tiene un buffer de recepcioacuten
servicio de equilibrado de velocidad equilibrar la velocidad de enviacuteo a la de la aplicacioacuten vaciando el buffer de recepcioacutenla aplicacioacuten puede ser
lenta leyendo del buffer
el emisor no saturaraacuteel buffer del receptor
a base de enviar mucho muy seguido
control de flujoTCP Control de flujo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-82
TCP control de flujo coacutemo funciona
(suponer que el receptor TCP descarta segmentos fuera de orden)hay sitio en el buffer
RcvWindow = RcvBuffer -[LastByteRcvd - LastByteRead]
el receptor anuncia el espacio libre incluyendo el valor RcvWindow en los segmentosel emisor limita los datos sin ACK a RcvWindow
garantiza que el buffer de recepcioacuten no se desborda
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-83
TCP lsquoRound Trip Timersquo y lsquoTimeoutrsquo
P iquestcoacutemo fijar el tiempo de lsquotimeoutrsquo de TCPmaacutes que RTT
pero RTT variacuteasi demasiado corto lsquotimeoutrsquo prematuro
retransmisiones innecesarias
si demasiado largo reaccioacuten lenta a peacuterdidas
P iquestcoacutemo estimar RTTSampleRTT tiempo medido desde transmisioacuten de un segmento hasta recepcioacuten de ACK
ignorar retransmisionesSampleRTT variaraacute queremos un valor maacutes ldquoestablerdquo
promedio de varias mediciones recientes no el valor actual
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-84
TCP lsquoRound Trip Timersquo y lsquoTimeoutrsquo
EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT
media moacutevil ponderada exponencialla influencia de una muestra pasada decrece exponencialmentevalor tiacutepico α = 0125
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-85
Ejemplo de estimacioacuten de RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106time (seconnds)
RTT
(mill
iseco
nds)
SampleRTT Estimated RTT
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-86
TCP lsquoRound Trip Timersquo y lsquoTimeoutrsquoFijar el tiempo de expiracioacuten (lsquotimeoutrsquo)
EstimatedRTT maacutes ldquomargen de seguridadrdquogran variacioacuten en EstimatedRTT -gt mayor margen de seguridad
primero estimar cuaacutento SampleRTT se desviacutea de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-β)DevRTT +β|SampleRTT-EstimatedRTT|
(tiacutepicamente β = 025)
Entonces fijar el tiempo de expiracioacuten
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
Algoritmo de Karn
Si recibimos el reconocimiento de un paquete retransmitido no tenemos forma de saber a cuaacutel de las retransmisiones corresponde ese reconocimientoPor ello se ignoran los paquetes retransmitidos a la hora de computar el RTTEste procedimiento se denomina algoritmo de Karn
3-87Capa de TransporteRauacutel Duraacuten Nacho Peacuterez v14
3-88
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacuten transferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-89
Principios de control de la congestioacuten
Congestioacuteninformal ldquodemasiadas fuentes enviando demasiados datos demasiado deprisa para que la red lo pueda asimilarrdquoiexcliexcldiferente a control de flujosiacutentomas
paquetes perdidos (desbordamiento de bufferes en los routers)grandes retardos (encolado en los bufferes de los routers)iexcliexclun problema ldquotop-10rdquo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-90
Formas de abordar el control de congestioacuten
control de terminal a terminalno hay realimentacioacuten expliacutecita de la redla congestioacuten se deduce por el retardo y las peacuterdidas observadas por los terminaleseste es el meacutetodo de TCP
control asistido por la redlos routers proporcionan realimentacioacuten a los terminales
un bit que indica la congestioacuten (SNA DECnet TCPIP ECN ATM)indicacioacuten expliacutecita de la tasa a la que el emisor deberiacutea enviar
Dos formas principales de abordarla
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-91
Caso de estudio servicio ABR de las redes ATM
ABR lsquoAvailable Bit Ratersquo(Tasa de bits disponible)
ldquoservicio elaacutesticordquosi la ruta del emisor ldquoinfra-cargadardquo
el emisor deberiacutea usar el ancho de banda disponible
si la ruta del emisor estaacutecongestionada
el emisor se limita a la tasa garantizada
ceacutelulas RM (lsquoresource managementrsquo gestioacuten de recursos) enviado por el emisor intercalado con las celdas de datoslos bits en las celdas RM se rellenan por los switches (ldquoasistido por la redrdquo)
bit NI no hay mejora en la velocidad (congestioacuten suave)bit CI indica congestioacuten
las celdas RM se devuelven al emisor por el receptor sin modificar
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-92
Caso de estudio servicio ABR de las redes ATM
campo ER (lsquoexplicit ratersquo tasa expliacutecita) de 2 bytes en celda RM
un switch congestionado puede rebajar el valor ERla tasa del emisor es asiacute la maacutexima que puede aguantar la ruta
bit EFCI en celdas de datos se pone a 1 en switch congestionado
si la celda que precede a la RM tiene EFCI a 1 el emisor pone a1 el bit CI en la celda RM devueltaRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-93
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacuten transferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-94
control de congestioacuten en TCP incremento aditivo decremento multiplicativo
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
filosofiacutea incrementar la tasa de transmisioacuten (tamantildeo de la ventana) sondeando el ancho de banda accesible hasta que hay peacuterdidas
incremento aditivo incrementar cwnd en 1 MSS cada RTT hasta que haya peacuterdidasdecremento multiplicativo dividir cwnd por 2 cuando las haya
tiempo
cwnd
tam
antildeo
de la
ven
tana
co
n co
nges
tioacuten
diente de sierra sondeo del ancho
de banda
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-95
Control de congestioacuten TCP detalles
el emisor limita la transmisioacutenLastByteSent-LastByteAcked
le cwnd
lsquogrosso modorsquo
cwnd es dinaacutemica funcioacuten de la congestioacuten de la red percibida
iquestCoacutemo percibe el emisor la congestioacutenevento de peacuterdida = expiracioacuten o 3 ACKs duplicadosel emisor reduce la tasa (cwnd) tras un evento de peacuterdida
3 mecanismosAIMDarranque lentoconservador tras eventos de expiracioacuten
tasa = cwndRTT Bytess
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-96
TCP Arranque lento
cuando se inicia la conexioacuten la tasa se incrementa exponencialmente hasta la primera peacuterdida
inicialmente cwnd = 1 MSScwnd se dobla cada RTTse incrementa cwnd con cada ACK recibido
resumen la tasa inicial es baja pero crece exponencialmente raacutepido
Host A
un segmento
RTT
Host B
tiempo
2 segmentos
4 segmentos
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-97
Refinado deduccioacuten de peacuterdidastras 3 ACKs duplicados
cwnd se divide por 2la ventana ya crece linealmente
pero tras una expiracioacutencwnd en cambio se pone a 1 MSS la ventana entonces crece exponencialmentehasta un umbral luego linealmente
3 ACKs duplicados indica que la red es capaz de entregar algunos segmentos
expiracioacuten indica una situacioacuten de congestioacuten ldquomaacutes alarmanterdquo
Filosofiacutea
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-98
RefinadoP iquestcuaacutendo deberiacutea
pasarse de incremento exponencial a lineal
R cuando cwnd llegue a 12 de su valor antes de la expiracioacuten
Implementacioacutenvariable ssthreshcon una peacuterdida ssthreshse pone a 12 de cwndjusto antes de la peacuterdida
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-99
Resumen Control de congestioacuten TCP
expiracioacutenssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmitir segmento que falta
Λcwnd gt ssthresh
evitacioacuten decongestion
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmitir nuevo(s) segmento(s) seguacuten se pueda
ACK nuevo
dupACKcount++ACK duplicado
recuperacioacuten raacutepida
cwnd = cwnd + MSStransmitir nuevo(s) segmento(s) seguacuten se pueda
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmitir segmento que falta
dupACKcount == 3
expiracioacutenssthresh = cwnd2
cwnd = 1 dupACKcount = 0
retransmitir segmento que faltassthresh= cwnd2
cwnd = ssthresh + 3retransmitir segmento que falta
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
ACK nuevo
arranque lento
expiracioacutenssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmitir segmento que falta
cwnd = cwnd+MSSdupACKcount = 0transmitir nuevo(s) segmento(s) seguacuten se pueda
ACK nuevodupACKcount++ACK duplicado
Λcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NewACK
NewACK
NewACK
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-100
eficiencia de TCP
iquestcuaacutel es la tasa media de TCP en funcioacuten del tamantildeo de ventana y RTT
ignorar el arranque raacutepidosea W el tamantildeo de la ventana cuando ocurre una peacuterdida
cuando la ventana es W la tasa es WRTTjusto tras la peacuterdida la ventana pasa a W2 y la tasa a W2RTTla tasa media es 075 WRTT
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-101
Futuros de TCP TCP sobre ldquotubos largos y gruesosrdquo
ejemplo segmentos de 1500 bytes RTT 100ms se quiere tasa de 10 Gbps requiere tamantildeo de ventana W = 83333 segmentos en traacutensitotasa de transferencia en funcioacuten de la tasa de peacuterdidas
L = 210-10 iexcliexcluna tasa de peacuterdidas muy bajanuevas versiones de TCP para alta velocidad
LRTTMSSsdot221
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-102
objetivo de equidad si K sesiones TCP comparten el mismo enlace cuello de botella de ancho de banda R cada uno deberiacutea tener una tasa media de RK
conexioacuten TCP 1
router cuello de botella
capacidad Rconexioacuten TCP 2
Equidad en TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-103
iquestPor queacute es equitativoTCP2 sesiones que compiten
el incremento aditivo da una pendiente de 1 en los incrementosel decremento multiplicativo decrementa la tasa proporcionalmente
R
R
reparto equitativo del ancho de banda
tasa de transferencia
de la conexioacuten 1
tasa
de
tran
sfer
enc i
a
de la
con
exioacute
n 2
evitacioacuten de congestioacuten incremento aditivopeacuterdida decrementar ventana en un factor de 2evitacioacuten de congestioacuten incremento aditivo
peacuterdida decrementar ventana en un factor de 2
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-104
Equidad (maacutes)Equidad y UDP
las aplicaciones multimedia a menudo no usan TCP
no quieren que la tasa de transf se limite por el control de congestioacuten
por eso usan UDPenviacutean audiovideo a tasa constante toleran peacuterdida de paquetes
Equidad y conexiones TCP paralelasnada impide a una aplicacioacuten abrir conexiones paralelas entre 2 hostslos navegadores lo hacenejemplo enlace de tasa R permite 9 conexiones
una aplicacioacuten pide 1 TCP obtiene tasa R10una aplicacioacuten pide 11 TCPs iexcliexclobtiene tasa R2
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-105
Capiacutetulo 3 Resumenprincipios detraacutes de los servicios de la capa de transporte
multiplexacioacuten desmultiplexacioacutentransferencia de datos fiablecontrol de flujocontrol de congestioacuten
instanciacioacuten e implementacioacuten en Internet
UDPTCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-61
estructura del segmento TCP
nordm puerto origen nordm puerto dest
32 bits
datosaplicacioacuten
(long variable)
nordm secuencianordm ACK
ventana recepcioacutenpuntero datos urgchecksum
FSRPAUlong encab
notused
Opciones (long variable)
URG datos urgentes(la aplicacioacuten debe
hacer algo)ACK nordm ACK
vaacutelidoPSH push enviar
estos datos ya a laaplicacioacuten
(el programador no puede manejarlo)
RST SYN FINestab conexioacuten
(comandos estab cerrar)
nordm bytes que el receptorestaacute dispuestoa aceptar
contados en bytes de datos(iexcliexclno segmentos)
checksum Internet
(como en UDP)
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
0 15 16 31
3-62
TCP nuacutems secuencia y ACKsnos secuencia
ldquonordmrdquo flujo de bytes del 1er byte de datos del segmento
ACKsnordm sec del siguiente byte esperado de la otra parteACK acumulativo
P coacutemo se tratan los segmentos fuera de orden
R la especificacioacuten de TCP no lo dice lo que haga el implementador
Host A Host B
Seq=42 ACK=79 data = lsquoCrsquo
Seq=79 ACK=43 data = lsquoCrsquo
Seq=43 ACK=80
Usuarioescribe
lsquoCrsquo
el host enviacuteaACK por ladevolucioacuten
de lsquoCrsquo
el host enviacutea ACK por lsquoCrsquodevuelve lsquoCrsquo
tiempoejemplo sencillo de telnet
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-63
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacutentransferencia de datos fiable control de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-64
TCP gestioacuten de la conexioacutenRecordatorio en TCP emisor y
receptor establecen una ldquoconexioacutenrdquo antes de intercambiar segmentos de datosinicializar variables TCP
nos de secuenciabuffers info de control de flujo (pej RcvWindow)
el cliente inicia la conexioacutenSocket clientSocket = new Socket(rdquonombrehostrdquonumero puerto)
el servidor el cliente contacta con eacutelSocket connectionSocket = welcomeSocketaccept()
Establecimiento en 3 pasos
Paso 1 el cliente envia segmento SYN al servidor
especifica nordm secuencia inicialsin datos
Paso 2 el servidor recibe SYN responde con segmento SYNACK
el servidor crea buffersespecifica el nordm sec inicial del servidor
Paso 3 el cliente recibe SYNACK responde con segmento ACK que puede contener datos
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-65
TCP gestioacuten de la conexioacuten (cont)
Cerrar una conexioacuten
el cliente cierra el socketclientSocketclose()
Paso 1 el sistema terminal del cliente enviacutea el segmento de control TCP FIN al servidor
Paso 2 el servidor recibe FIN responde con ACK Cierra la conexioacuten enviacutea FIN
cliente
FIN
servidor
ACK
ACK
FIN
cerrar
cerrar
cerrado
espe
ra
tem
pori
zada
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-66
TCP gestioacuten de la conexioacuten (cont)
Paso 3 el cliente recibe FIN responde con ACK
entra en ldquoespera temporizadardquo ndashresponderaacute con ACK a los FINs que reciba
Paso 4 el servidor recibe ACK Conexioacuten cerrada
Nota con una pequentildea modificacioacuten puede manejar FINs simultaacuteneos
cliente
FIN
servidor
ACK
ACK
FIN
cerrando
cerrando
cerrada
espe
ra
tem
pori
zada
cerrada
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-67
TCP gestioacuten de la conexioacuten (cont)
ciclo de vidade cliente TCP
ciclo de vidade servidor TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-68
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacutentransferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-69
TCP transferencia de datos fiable
TCP crea servicio rdtsobre el servicio no fiable de IPsegmentos en cadenaacks acumulativosTCP usa un uacutenico temporizador de retransmisioacuten
retransmisiones disparadas por
eventos de temporizador a ceroACKs duplicados
inicialmente considerar emisor TCP simplificado
ignorar ACKs duplicadosignorar control de flujo congestioacuten de flujo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-70
eventos de emisioacuten TCPdatos recibidos de la
aplicacioacutencrear segmento con nordmsecnordm sec es el nordm del 1er byte del segmento dentro del flujo de bytesiniciar temporizador si no lo estaacuteintervalo de expiracioacuten TimeOutInterval
lsquotimeoutrsquo (expiracioacuten)retransmitir segmento que la provocoacutereiniciar temporizador
ACK recibidosi se refiere a segmentos sin ACK previo
actualizar aquellos a los que les falta el ACKiniciar temporizador si hay segmentos pendientes
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-71
emisor TCP (simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (siempre) switch(suceso)
suceso datos recibidos de la aplicacioacuten de capa superiorcrear segmento TCP con nordm sec NextSeqNum if (temporizador no en marcha)
iniciar temporizadorpasar segmento a IP NextSeqNum = NextSeqNum + length(data)
suceso temporizador expiroacuteretransmitir segmento sin ACK con el menor nordm sec iniciar contador
suceso recibido ACK con valor del campo ACK == yif (y gt SendBase)
SendBase = yif (hay segmentos sin ACK)
iniciar temporizador
fin de loop siempre
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-72
TCP situaciones para retransmisioacutenHost A
Seq=100 20 bytes data
ACK=100
tiempotimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq=
92 t
imeo
ut
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
peacuterdida
tim
eout
situacioacuten de ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tiempo
Seq=
92 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
SendBase= 100
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-73
TCP situaciones para retransmisioacuten (maacutes)Host A
Seq=92 8 bytes data
ACK=100
peacuterdida
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
tiempo
SendBase= 120
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-74
generacioacuten de ACK en TCP [RFC 1122 RFC 2581]
Evento en Receptor
Llegada de segmento en orden connordm sec esperado Todos hasta elnordm sec esperado ya tienen ACK
Llegada de segmento en orden connordm sec esperado Hay otro seg en orden esperando transm de ACK
Llegada de nordm de sec fuera de orden mayor que el esperado Detectada laguna
Llegada de segmento que comple-ta parcialmente una laguna
Receptor TCP accioacuten
ACK retardado Esperar hasta 500msal siguiente segmento Si no llega enviarACK
Inmediatamente enviar ACK acumulativopara ambos segmentos
Inmediatamente enviar ACK duplicadoindicando nordm sec del siguiente byte esperado
Inmediatamente enviar ACK suponiendo que el segmento empieza en el liacutemite inferior de la laguna
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-75
Retransmisioacuten raacutepida
periacuteodo de expiracioacuten a menudo relativamente largo
largo retardo antes de reenviar el paquete perdido
se detectan segmentos perdidos por ACKs repetidos
el emisor a menudo enviacutea varios segmentos seguidossi se pierde un segmento seguramente habraacute varios ACKs repetidos
si el emisor recibe 3 ACKs por los mismos datos supone que el segmento de despueacutes de los datos con ACK se perdioacute
retransmisioacuten raacutepida reenviar segmento antes de que expire el temporizador
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-76
Host A
tim
eout
Host B
tiempo
X
reenviar 2ordm segmento
Figura 337 Reenviar segmento tras triple ACKRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-77
suceso recibido ACK con campo ACK con valor == s if (s gt SendBase)
SendBase = sif (hay segmentos pendientes de ACK)
iniciar temporizador
else incrementar cuenta de ACKs duplicados recibidos para s if (cuenta de ACKs duplicados para s == 3)
reenviar segmento con nordm sec s
Algoritmo de retransmisioacuten raacutepida
un ACK duplicado paraun segmento ya con ACK
retransmisioacuten raacutepida
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
Algoritmo de Nagle [RFC896]
Las conexiones interactivas (ssh telnet) suelen enviar segmentos con muy pocos datos (uno dos bytes)
iexclPeacuterdida de eficienciaEs maacutes interesante reunir varios datos procedentes de la aplicacioacuten y mandarlos todos juntosEl algoritmo de Nagle indica que no se enviacuteen nuevos segmentos mientras queden reconocimientos pendientes
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte 3-78
Algoritmo de Nagle [RFC896]
Evento en emisor
Llegada de datos de la aplicacioacutenHay ACKs pendientes
Llegada de un ACK pendiente
Llegada de datos de la aplicacioacutenNo hay ACKs pendientes
Llegada de datos de la aplicacioacutenNo queda sitio en el buffer delemisor
Accioacuten en emisor
Acumular datos en el buffer del emisor
Inmediatamente enviar todos los segmen-tos acumulados en buffer
Inmediatamente enviar datos al receptor
Inmediatamente enviar datos si lo permi-te la ventana aunque no se hayan reci-bido ACKs previos
Capa de Transporte 3-79Rauacutel Duraacuten Nacho Peacuterez v14
3-80
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacutentransferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-81
en TCP el receptor tiene un buffer de recepcioacuten
servicio de equilibrado de velocidad equilibrar la velocidad de enviacuteo a la de la aplicacioacuten vaciando el buffer de recepcioacutenla aplicacioacuten puede ser
lenta leyendo del buffer
el emisor no saturaraacuteel buffer del receptor
a base de enviar mucho muy seguido
control de flujoTCP Control de flujo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-82
TCP control de flujo coacutemo funciona
(suponer que el receptor TCP descarta segmentos fuera de orden)hay sitio en el buffer
RcvWindow = RcvBuffer -[LastByteRcvd - LastByteRead]
el receptor anuncia el espacio libre incluyendo el valor RcvWindow en los segmentosel emisor limita los datos sin ACK a RcvWindow
garantiza que el buffer de recepcioacuten no se desborda
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-83
TCP lsquoRound Trip Timersquo y lsquoTimeoutrsquo
P iquestcoacutemo fijar el tiempo de lsquotimeoutrsquo de TCPmaacutes que RTT
pero RTT variacuteasi demasiado corto lsquotimeoutrsquo prematuro
retransmisiones innecesarias
si demasiado largo reaccioacuten lenta a peacuterdidas
P iquestcoacutemo estimar RTTSampleRTT tiempo medido desde transmisioacuten de un segmento hasta recepcioacuten de ACK
ignorar retransmisionesSampleRTT variaraacute queremos un valor maacutes ldquoestablerdquo
promedio de varias mediciones recientes no el valor actual
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-84
TCP lsquoRound Trip Timersquo y lsquoTimeoutrsquo
EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT
media moacutevil ponderada exponencialla influencia de una muestra pasada decrece exponencialmentevalor tiacutepico α = 0125
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-85
Ejemplo de estimacioacuten de RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106time (seconnds)
RTT
(mill
iseco
nds)
SampleRTT Estimated RTT
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-86
TCP lsquoRound Trip Timersquo y lsquoTimeoutrsquoFijar el tiempo de expiracioacuten (lsquotimeoutrsquo)
EstimatedRTT maacutes ldquomargen de seguridadrdquogran variacioacuten en EstimatedRTT -gt mayor margen de seguridad
primero estimar cuaacutento SampleRTT se desviacutea de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-β)DevRTT +β|SampleRTT-EstimatedRTT|
(tiacutepicamente β = 025)
Entonces fijar el tiempo de expiracioacuten
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
Algoritmo de Karn
Si recibimos el reconocimiento de un paquete retransmitido no tenemos forma de saber a cuaacutel de las retransmisiones corresponde ese reconocimientoPor ello se ignoran los paquetes retransmitidos a la hora de computar el RTTEste procedimiento se denomina algoritmo de Karn
3-87Capa de TransporteRauacutel Duraacuten Nacho Peacuterez v14
3-88
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacuten transferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-89
Principios de control de la congestioacuten
Congestioacuteninformal ldquodemasiadas fuentes enviando demasiados datos demasiado deprisa para que la red lo pueda asimilarrdquoiexcliexcldiferente a control de flujosiacutentomas
paquetes perdidos (desbordamiento de bufferes en los routers)grandes retardos (encolado en los bufferes de los routers)iexcliexclun problema ldquotop-10rdquo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-90
Formas de abordar el control de congestioacuten
control de terminal a terminalno hay realimentacioacuten expliacutecita de la redla congestioacuten se deduce por el retardo y las peacuterdidas observadas por los terminaleseste es el meacutetodo de TCP
control asistido por la redlos routers proporcionan realimentacioacuten a los terminales
un bit que indica la congestioacuten (SNA DECnet TCPIP ECN ATM)indicacioacuten expliacutecita de la tasa a la que el emisor deberiacutea enviar
Dos formas principales de abordarla
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-91
Caso de estudio servicio ABR de las redes ATM
ABR lsquoAvailable Bit Ratersquo(Tasa de bits disponible)
ldquoservicio elaacutesticordquosi la ruta del emisor ldquoinfra-cargadardquo
el emisor deberiacutea usar el ancho de banda disponible
si la ruta del emisor estaacutecongestionada
el emisor se limita a la tasa garantizada
ceacutelulas RM (lsquoresource managementrsquo gestioacuten de recursos) enviado por el emisor intercalado con las celdas de datoslos bits en las celdas RM se rellenan por los switches (ldquoasistido por la redrdquo)
bit NI no hay mejora en la velocidad (congestioacuten suave)bit CI indica congestioacuten
las celdas RM se devuelven al emisor por el receptor sin modificar
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-92
Caso de estudio servicio ABR de las redes ATM
campo ER (lsquoexplicit ratersquo tasa expliacutecita) de 2 bytes en celda RM
un switch congestionado puede rebajar el valor ERla tasa del emisor es asiacute la maacutexima que puede aguantar la ruta
bit EFCI en celdas de datos se pone a 1 en switch congestionado
si la celda que precede a la RM tiene EFCI a 1 el emisor pone a1 el bit CI en la celda RM devueltaRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-93
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacuten transferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-94
control de congestioacuten en TCP incremento aditivo decremento multiplicativo
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
filosofiacutea incrementar la tasa de transmisioacuten (tamantildeo de la ventana) sondeando el ancho de banda accesible hasta que hay peacuterdidas
incremento aditivo incrementar cwnd en 1 MSS cada RTT hasta que haya peacuterdidasdecremento multiplicativo dividir cwnd por 2 cuando las haya
tiempo
cwnd
tam
antildeo
de la
ven
tana
co
n co
nges
tioacuten
diente de sierra sondeo del ancho
de banda
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-95
Control de congestioacuten TCP detalles
el emisor limita la transmisioacutenLastByteSent-LastByteAcked
le cwnd
lsquogrosso modorsquo
cwnd es dinaacutemica funcioacuten de la congestioacuten de la red percibida
iquestCoacutemo percibe el emisor la congestioacutenevento de peacuterdida = expiracioacuten o 3 ACKs duplicadosel emisor reduce la tasa (cwnd) tras un evento de peacuterdida
3 mecanismosAIMDarranque lentoconservador tras eventos de expiracioacuten
tasa = cwndRTT Bytess
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-96
TCP Arranque lento
cuando se inicia la conexioacuten la tasa se incrementa exponencialmente hasta la primera peacuterdida
inicialmente cwnd = 1 MSScwnd se dobla cada RTTse incrementa cwnd con cada ACK recibido
resumen la tasa inicial es baja pero crece exponencialmente raacutepido
Host A
un segmento
RTT
Host B
tiempo
2 segmentos
4 segmentos
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-97
Refinado deduccioacuten de peacuterdidastras 3 ACKs duplicados
cwnd se divide por 2la ventana ya crece linealmente
pero tras una expiracioacutencwnd en cambio se pone a 1 MSS la ventana entonces crece exponencialmentehasta un umbral luego linealmente
3 ACKs duplicados indica que la red es capaz de entregar algunos segmentos
expiracioacuten indica una situacioacuten de congestioacuten ldquomaacutes alarmanterdquo
Filosofiacutea
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-98
RefinadoP iquestcuaacutendo deberiacutea
pasarse de incremento exponencial a lineal
R cuando cwnd llegue a 12 de su valor antes de la expiracioacuten
Implementacioacutenvariable ssthreshcon una peacuterdida ssthreshse pone a 12 de cwndjusto antes de la peacuterdida
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-99
Resumen Control de congestioacuten TCP
expiracioacutenssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmitir segmento que falta
Λcwnd gt ssthresh
evitacioacuten decongestion
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmitir nuevo(s) segmento(s) seguacuten se pueda
ACK nuevo
dupACKcount++ACK duplicado
recuperacioacuten raacutepida
cwnd = cwnd + MSStransmitir nuevo(s) segmento(s) seguacuten se pueda
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmitir segmento que falta
dupACKcount == 3
expiracioacutenssthresh = cwnd2
cwnd = 1 dupACKcount = 0
retransmitir segmento que faltassthresh= cwnd2
cwnd = ssthresh + 3retransmitir segmento que falta
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
ACK nuevo
arranque lento
expiracioacutenssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmitir segmento que falta
cwnd = cwnd+MSSdupACKcount = 0transmitir nuevo(s) segmento(s) seguacuten se pueda
ACK nuevodupACKcount++ACK duplicado
Λcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NewACK
NewACK
NewACK
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-100
eficiencia de TCP
iquestcuaacutel es la tasa media de TCP en funcioacuten del tamantildeo de ventana y RTT
ignorar el arranque raacutepidosea W el tamantildeo de la ventana cuando ocurre una peacuterdida
cuando la ventana es W la tasa es WRTTjusto tras la peacuterdida la ventana pasa a W2 y la tasa a W2RTTla tasa media es 075 WRTT
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-101
Futuros de TCP TCP sobre ldquotubos largos y gruesosrdquo
ejemplo segmentos de 1500 bytes RTT 100ms se quiere tasa de 10 Gbps requiere tamantildeo de ventana W = 83333 segmentos en traacutensitotasa de transferencia en funcioacuten de la tasa de peacuterdidas
L = 210-10 iexcliexcluna tasa de peacuterdidas muy bajanuevas versiones de TCP para alta velocidad
LRTTMSSsdot221
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-102
objetivo de equidad si K sesiones TCP comparten el mismo enlace cuello de botella de ancho de banda R cada uno deberiacutea tener una tasa media de RK
conexioacuten TCP 1
router cuello de botella
capacidad Rconexioacuten TCP 2
Equidad en TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-103
iquestPor queacute es equitativoTCP2 sesiones que compiten
el incremento aditivo da una pendiente de 1 en los incrementosel decremento multiplicativo decrementa la tasa proporcionalmente
R
R
reparto equitativo del ancho de banda
tasa de transferencia
de la conexioacuten 1
tasa
de
tran
sfer
enc i
a
de la
con
exioacute
n 2
evitacioacuten de congestioacuten incremento aditivopeacuterdida decrementar ventana en un factor de 2evitacioacuten de congestioacuten incremento aditivo
peacuterdida decrementar ventana en un factor de 2
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-104
Equidad (maacutes)Equidad y UDP
las aplicaciones multimedia a menudo no usan TCP
no quieren que la tasa de transf se limite por el control de congestioacuten
por eso usan UDPenviacutean audiovideo a tasa constante toleran peacuterdida de paquetes
Equidad y conexiones TCP paralelasnada impide a una aplicacioacuten abrir conexiones paralelas entre 2 hostslos navegadores lo hacenejemplo enlace de tasa R permite 9 conexiones
una aplicacioacuten pide 1 TCP obtiene tasa R10una aplicacioacuten pide 11 TCPs iexcliexclobtiene tasa R2
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-105
Capiacutetulo 3 Resumenprincipios detraacutes de los servicios de la capa de transporte
multiplexacioacuten desmultiplexacioacutentransferencia de datos fiablecontrol de flujocontrol de congestioacuten
instanciacioacuten e implementacioacuten en Internet
UDPTCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-67
TCP gestioacuten de la conexioacuten (cont)
ciclo de vidade cliente TCP
ciclo de vidade servidor TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-68
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacutentransferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-69
TCP transferencia de datos fiable
TCP crea servicio rdtsobre el servicio no fiable de IPsegmentos en cadenaacks acumulativosTCP usa un uacutenico temporizador de retransmisioacuten
retransmisiones disparadas por
eventos de temporizador a ceroACKs duplicados
inicialmente considerar emisor TCP simplificado
ignorar ACKs duplicadosignorar control de flujo congestioacuten de flujo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-70
eventos de emisioacuten TCPdatos recibidos de la
aplicacioacutencrear segmento con nordmsecnordm sec es el nordm del 1er byte del segmento dentro del flujo de bytesiniciar temporizador si no lo estaacuteintervalo de expiracioacuten TimeOutInterval
lsquotimeoutrsquo (expiracioacuten)retransmitir segmento que la provocoacutereiniciar temporizador
ACK recibidosi se refiere a segmentos sin ACK previo
actualizar aquellos a los que les falta el ACKiniciar temporizador si hay segmentos pendientes
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-71
emisor TCP (simplificado)
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (siempre) switch(suceso)
suceso datos recibidos de la aplicacioacuten de capa superiorcrear segmento TCP con nordm sec NextSeqNum if (temporizador no en marcha)
iniciar temporizadorpasar segmento a IP NextSeqNum = NextSeqNum + length(data)
suceso temporizador expiroacuteretransmitir segmento sin ACK con el menor nordm sec iniciar contador
suceso recibido ACK con valor del campo ACK == yif (y gt SendBase)
SendBase = yif (hay segmentos sin ACK)
iniciar temporizador
fin de loop siempre
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-72
TCP situaciones para retransmisioacutenHost A
Seq=100 20 bytes data
ACK=100
tiempotimeout prematuro
Host B
Seq=92 8 bytes data
ACK=120
Seq=92 8 bytes data
Seq=
92 t
imeo
ut
ACK=120
Host A
Seq=92 8 bytes data
ACK=100
peacuterdida
tim
eout
situacioacuten de ACK perdido
Host B
X
Seq=92 8 bytes data
ACK=100
tiempo
Seq=
92 t
imeo
ut
SendBase= 100
SendBase= 120
SendBase= 120
SendBase= 100
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-73
TCP situaciones para retransmisioacuten (maacutes)Host A
Seq=92 8 bytes data
ACK=100
peacuterdida
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
tiempo
SendBase= 120
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-74
generacioacuten de ACK en TCP [RFC 1122 RFC 2581]
Evento en Receptor
Llegada de segmento en orden connordm sec esperado Todos hasta elnordm sec esperado ya tienen ACK
Llegada de segmento en orden connordm sec esperado Hay otro seg en orden esperando transm de ACK
Llegada de nordm de sec fuera de orden mayor que el esperado Detectada laguna
Llegada de segmento que comple-ta parcialmente una laguna
Receptor TCP accioacuten
ACK retardado Esperar hasta 500msal siguiente segmento Si no llega enviarACK
Inmediatamente enviar ACK acumulativopara ambos segmentos
Inmediatamente enviar ACK duplicadoindicando nordm sec del siguiente byte esperado
Inmediatamente enviar ACK suponiendo que el segmento empieza en el liacutemite inferior de la laguna
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-75
Retransmisioacuten raacutepida
periacuteodo de expiracioacuten a menudo relativamente largo
largo retardo antes de reenviar el paquete perdido
se detectan segmentos perdidos por ACKs repetidos
el emisor a menudo enviacutea varios segmentos seguidossi se pierde un segmento seguramente habraacute varios ACKs repetidos
si el emisor recibe 3 ACKs por los mismos datos supone que el segmento de despueacutes de los datos con ACK se perdioacute
retransmisioacuten raacutepida reenviar segmento antes de que expire el temporizador
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-76
Host A
tim
eout
Host B
tiempo
X
reenviar 2ordm segmento
Figura 337 Reenviar segmento tras triple ACKRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-77
suceso recibido ACK con campo ACK con valor == s if (s gt SendBase)
SendBase = sif (hay segmentos pendientes de ACK)
iniciar temporizador
else incrementar cuenta de ACKs duplicados recibidos para s if (cuenta de ACKs duplicados para s == 3)
reenviar segmento con nordm sec s
Algoritmo de retransmisioacuten raacutepida
un ACK duplicado paraun segmento ya con ACK
retransmisioacuten raacutepida
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
Algoritmo de Nagle [RFC896]
Las conexiones interactivas (ssh telnet) suelen enviar segmentos con muy pocos datos (uno dos bytes)
iexclPeacuterdida de eficienciaEs maacutes interesante reunir varios datos procedentes de la aplicacioacuten y mandarlos todos juntosEl algoritmo de Nagle indica que no se enviacuteen nuevos segmentos mientras queden reconocimientos pendientes
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte 3-78
Algoritmo de Nagle [RFC896]
Evento en emisor
Llegada de datos de la aplicacioacutenHay ACKs pendientes
Llegada de un ACK pendiente
Llegada de datos de la aplicacioacutenNo hay ACKs pendientes
Llegada de datos de la aplicacioacutenNo queda sitio en el buffer delemisor
Accioacuten en emisor
Acumular datos en el buffer del emisor
Inmediatamente enviar todos los segmen-tos acumulados en buffer
Inmediatamente enviar datos al receptor
Inmediatamente enviar datos si lo permi-te la ventana aunque no se hayan reci-bido ACKs previos
Capa de Transporte 3-79Rauacutel Duraacuten Nacho Peacuterez v14
3-80
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacutentransferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-81
en TCP el receptor tiene un buffer de recepcioacuten
servicio de equilibrado de velocidad equilibrar la velocidad de enviacuteo a la de la aplicacioacuten vaciando el buffer de recepcioacutenla aplicacioacuten puede ser
lenta leyendo del buffer
el emisor no saturaraacuteel buffer del receptor
a base de enviar mucho muy seguido
control de flujoTCP Control de flujo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-82
TCP control de flujo coacutemo funciona
(suponer que el receptor TCP descarta segmentos fuera de orden)hay sitio en el buffer
RcvWindow = RcvBuffer -[LastByteRcvd - LastByteRead]
el receptor anuncia el espacio libre incluyendo el valor RcvWindow en los segmentosel emisor limita los datos sin ACK a RcvWindow
garantiza que el buffer de recepcioacuten no se desborda
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-83
TCP lsquoRound Trip Timersquo y lsquoTimeoutrsquo
P iquestcoacutemo fijar el tiempo de lsquotimeoutrsquo de TCPmaacutes que RTT
pero RTT variacuteasi demasiado corto lsquotimeoutrsquo prematuro
retransmisiones innecesarias
si demasiado largo reaccioacuten lenta a peacuterdidas
P iquestcoacutemo estimar RTTSampleRTT tiempo medido desde transmisioacuten de un segmento hasta recepcioacuten de ACK
ignorar retransmisionesSampleRTT variaraacute queremos un valor maacutes ldquoestablerdquo
promedio de varias mediciones recientes no el valor actual
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-84
TCP lsquoRound Trip Timersquo y lsquoTimeoutrsquo
EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT
media moacutevil ponderada exponencialla influencia de una muestra pasada decrece exponencialmentevalor tiacutepico α = 0125
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-85
Ejemplo de estimacioacuten de RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106time (seconnds)
RTT
(mill
iseco
nds)
SampleRTT Estimated RTT
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-86
TCP lsquoRound Trip Timersquo y lsquoTimeoutrsquoFijar el tiempo de expiracioacuten (lsquotimeoutrsquo)
EstimatedRTT maacutes ldquomargen de seguridadrdquogran variacioacuten en EstimatedRTT -gt mayor margen de seguridad
primero estimar cuaacutento SampleRTT se desviacutea de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-β)DevRTT +β|SampleRTT-EstimatedRTT|
(tiacutepicamente β = 025)
Entonces fijar el tiempo de expiracioacuten
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
Algoritmo de Karn
Si recibimos el reconocimiento de un paquete retransmitido no tenemos forma de saber a cuaacutel de las retransmisiones corresponde ese reconocimientoPor ello se ignoran los paquetes retransmitidos a la hora de computar el RTTEste procedimiento se denomina algoritmo de Karn
3-87Capa de TransporteRauacutel Duraacuten Nacho Peacuterez v14
3-88
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacuten transferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-89
Principios de control de la congestioacuten
Congestioacuteninformal ldquodemasiadas fuentes enviando demasiados datos demasiado deprisa para que la red lo pueda asimilarrdquoiexcliexcldiferente a control de flujosiacutentomas
paquetes perdidos (desbordamiento de bufferes en los routers)grandes retardos (encolado en los bufferes de los routers)iexcliexclun problema ldquotop-10rdquo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-90
Formas de abordar el control de congestioacuten
control de terminal a terminalno hay realimentacioacuten expliacutecita de la redla congestioacuten se deduce por el retardo y las peacuterdidas observadas por los terminaleseste es el meacutetodo de TCP
control asistido por la redlos routers proporcionan realimentacioacuten a los terminales
un bit que indica la congestioacuten (SNA DECnet TCPIP ECN ATM)indicacioacuten expliacutecita de la tasa a la que el emisor deberiacutea enviar
Dos formas principales de abordarla
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-91
Caso de estudio servicio ABR de las redes ATM
ABR lsquoAvailable Bit Ratersquo(Tasa de bits disponible)
ldquoservicio elaacutesticordquosi la ruta del emisor ldquoinfra-cargadardquo
el emisor deberiacutea usar el ancho de banda disponible
si la ruta del emisor estaacutecongestionada
el emisor se limita a la tasa garantizada
ceacutelulas RM (lsquoresource managementrsquo gestioacuten de recursos) enviado por el emisor intercalado con las celdas de datoslos bits en las celdas RM se rellenan por los switches (ldquoasistido por la redrdquo)
bit NI no hay mejora en la velocidad (congestioacuten suave)bit CI indica congestioacuten
las celdas RM se devuelven al emisor por el receptor sin modificar
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-92
Caso de estudio servicio ABR de las redes ATM
campo ER (lsquoexplicit ratersquo tasa expliacutecita) de 2 bytes en celda RM
un switch congestionado puede rebajar el valor ERla tasa del emisor es asiacute la maacutexima que puede aguantar la ruta
bit EFCI en celdas de datos se pone a 1 en switch congestionado
si la celda que precede a la RM tiene EFCI a 1 el emisor pone a1 el bit CI en la celda RM devueltaRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-93
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacuten transferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-94
control de congestioacuten en TCP incremento aditivo decremento multiplicativo
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
filosofiacutea incrementar la tasa de transmisioacuten (tamantildeo de la ventana) sondeando el ancho de banda accesible hasta que hay peacuterdidas
incremento aditivo incrementar cwnd en 1 MSS cada RTT hasta que haya peacuterdidasdecremento multiplicativo dividir cwnd por 2 cuando las haya
tiempo
cwnd
tam
antildeo
de la
ven
tana
co
n co
nges
tioacuten
diente de sierra sondeo del ancho
de banda
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-95
Control de congestioacuten TCP detalles
el emisor limita la transmisioacutenLastByteSent-LastByteAcked
le cwnd
lsquogrosso modorsquo
cwnd es dinaacutemica funcioacuten de la congestioacuten de la red percibida
iquestCoacutemo percibe el emisor la congestioacutenevento de peacuterdida = expiracioacuten o 3 ACKs duplicadosel emisor reduce la tasa (cwnd) tras un evento de peacuterdida
3 mecanismosAIMDarranque lentoconservador tras eventos de expiracioacuten
tasa = cwndRTT Bytess
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-96
TCP Arranque lento
cuando se inicia la conexioacuten la tasa se incrementa exponencialmente hasta la primera peacuterdida
inicialmente cwnd = 1 MSScwnd se dobla cada RTTse incrementa cwnd con cada ACK recibido
resumen la tasa inicial es baja pero crece exponencialmente raacutepido
Host A
un segmento
RTT
Host B
tiempo
2 segmentos
4 segmentos
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-97
Refinado deduccioacuten de peacuterdidastras 3 ACKs duplicados
cwnd se divide por 2la ventana ya crece linealmente
pero tras una expiracioacutencwnd en cambio se pone a 1 MSS la ventana entonces crece exponencialmentehasta un umbral luego linealmente
3 ACKs duplicados indica que la red es capaz de entregar algunos segmentos
expiracioacuten indica una situacioacuten de congestioacuten ldquomaacutes alarmanterdquo
Filosofiacutea
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-98
RefinadoP iquestcuaacutendo deberiacutea
pasarse de incremento exponencial a lineal
R cuando cwnd llegue a 12 de su valor antes de la expiracioacuten
Implementacioacutenvariable ssthreshcon una peacuterdida ssthreshse pone a 12 de cwndjusto antes de la peacuterdida
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-99
Resumen Control de congestioacuten TCP
expiracioacutenssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmitir segmento que falta
Λcwnd gt ssthresh
evitacioacuten decongestion
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmitir nuevo(s) segmento(s) seguacuten se pueda
ACK nuevo
dupACKcount++ACK duplicado
recuperacioacuten raacutepida
cwnd = cwnd + MSStransmitir nuevo(s) segmento(s) seguacuten se pueda
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmitir segmento que falta
dupACKcount == 3
expiracioacutenssthresh = cwnd2
cwnd = 1 dupACKcount = 0
retransmitir segmento que faltassthresh= cwnd2
cwnd = ssthresh + 3retransmitir segmento que falta
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
ACK nuevo
arranque lento
expiracioacutenssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmitir segmento que falta
cwnd = cwnd+MSSdupACKcount = 0transmitir nuevo(s) segmento(s) seguacuten se pueda
ACK nuevodupACKcount++ACK duplicado
Λcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NewACK
NewACK
NewACK
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-100
eficiencia de TCP
iquestcuaacutel es la tasa media de TCP en funcioacuten del tamantildeo de ventana y RTT
ignorar el arranque raacutepidosea W el tamantildeo de la ventana cuando ocurre una peacuterdida
cuando la ventana es W la tasa es WRTTjusto tras la peacuterdida la ventana pasa a W2 y la tasa a W2RTTla tasa media es 075 WRTT
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-101
Futuros de TCP TCP sobre ldquotubos largos y gruesosrdquo
ejemplo segmentos de 1500 bytes RTT 100ms se quiere tasa de 10 Gbps requiere tamantildeo de ventana W = 83333 segmentos en traacutensitotasa de transferencia en funcioacuten de la tasa de peacuterdidas
L = 210-10 iexcliexcluna tasa de peacuterdidas muy bajanuevas versiones de TCP para alta velocidad
LRTTMSSsdot221
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-102
objetivo de equidad si K sesiones TCP comparten el mismo enlace cuello de botella de ancho de banda R cada uno deberiacutea tener una tasa media de RK
conexioacuten TCP 1
router cuello de botella
capacidad Rconexioacuten TCP 2
Equidad en TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-103
iquestPor queacute es equitativoTCP2 sesiones que compiten
el incremento aditivo da una pendiente de 1 en los incrementosel decremento multiplicativo decrementa la tasa proporcionalmente
R
R
reparto equitativo del ancho de banda
tasa de transferencia
de la conexioacuten 1
tasa
de
tran
sfer
enc i
a
de la
con
exioacute
n 2
evitacioacuten de congestioacuten incremento aditivopeacuterdida decrementar ventana en un factor de 2evitacioacuten de congestioacuten incremento aditivo
peacuterdida decrementar ventana en un factor de 2
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-104
Equidad (maacutes)Equidad y UDP
las aplicaciones multimedia a menudo no usan TCP
no quieren que la tasa de transf se limite por el control de congestioacuten
por eso usan UDPenviacutean audiovideo a tasa constante toleran peacuterdida de paquetes
Equidad y conexiones TCP paralelasnada impide a una aplicacioacuten abrir conexiones paralelas entre 2 hostslos navegadores lo hacenejemplo enlace de tasa R permite 9 conexiones
una aplicacioacuten pide 1 TCP obtiene tasa R10una aplicacioacuten pide 11 TCPs iexcliexclobtiene tasa R2
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-105
Capiacutetulo 3 Resumenprincipios detraacutes de los servicios de la capa de transporte
multiplexacioacuten desmultiplexacioacutentransferencia de datos fiablecontrol de flujocontrol de congestioacuten
instanciacioacuten e implementacioacuten en Internet
UDPTCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-73
TCP situaciones para retransmisioacuten (maacutes)Host A
Seq=92 8 bytes data
ACK=100
peacuterdida
tim
eout
ACK acumulativo
Host B
X
Seq=100 20 bytes data
ACK=120
tiempo
SendBase= 120
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-74
generacioacuten de ACK en TCP [RFC 1122 RFC 2581]
Evento en Receptor
Llegada de segmento en orden connordm sec esperado Todos hasta elnordm sec esperado ya tienen ACK
Llegada de segmento en orden connordm sec esperado Hay otro seg en orden esperando transm de ACK
Llegada de nordm de sec fuera de orden mayor que el esperado Detectada laguna
Llegada de segmento que comple-ta parcialmente una laguna
Receptor TCP accioacuten
ACK retardado Esperar hasta 500msal siguiente segmento Si no llega enviarACK
Inmediatamente enviar ACK acumulativopara ambos segmentos
Inmediatamente enviar ACK duplicadoindicando nordm sec del siguiente byte esperado
Inmediatamente enviar ACK suponiendo que el segmento empieza en el liacutemite inferior de la laguna
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-75
Retransmisioacuten raacutepida
periacuteodo de expiracioacuten a menudo relativamente largo
largo retardo antes de reenviar el paquete perdido
se detectan segmentos perdidos por ACKs repetidos
el emisor a menudo enviacutea varios segmentos seguidossi se pierde un segmento seguramente habraacute varios ACKs repetidos
si el emisor recibe 3 ACKs por los mismos datos supone que el segmento de despueacutes de los datos con ACK se perdioacute
retransmisioacuten raacutepida reenviar segmento antes de que expire el temporizador
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-76
Host A
tim
eout
Host B
tiempo
X
reenviar 2ordm segmento
Figura 337 Reenviar segmento tras triple ACKRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-77
suceso recibido ACK con campo ACK con valor == s if (s gt SendBase)
SendBase = sif (hay segmentos pendientes de ACK)
iniciar temporizador
else incrementar cuenta de ACKs duplicados recibidos para s if (cuenta de ACKs duplicados para s == 3)
reenviar segmento con nordm sec s
Algoritmo de retransmisioacuten raacutepida
un ACK duplicado paraun segmento ya con ACK
retransmisioacuten raacutepida
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
Algoritmo de Nagle [RFC896]
Las conexiones interactivas (ssh telnet) suelen enviar segmentos con muy pocos datos (uno dos bytes)
iexclPeacuterdida de eficienciaEs maacutes interesante reunir varios datos procedentes de la aplicacioacuten y mandarlos todos juntosEl algoritmo de Nagle indica que no se enviacuteen nuevos segmentos mientras queden reconocimientos pendientes
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte 3-78
Algoritmo de Nagle [RFC896]
Evento en emisor
Llegada de datos de la aplicacioacutenHay ACKs pendientes
Llegada de un ACK pendiente
Llegada de datos de la aplicacioacutenNo hay ACKs pendientes
Llegada de datos de la aplicacioacutenNo queda sitio en el buffer delemisor
Accioacuten en emisor
Acumular datos en el buffer del emisor
Inmediatamente enviar todos los segmen-tos acumulados en buffer
Inmediatamente enviar datos al receptor
Inmediatamente enviar datos si lo permi-te la ventana aunque no se hayan reci-bido ACKs previos
Capa de Transporte 3-79Rauacutel Duraacuten Nacho Peacuterez v14
3-80
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacutentransferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-81
en TCP el receptor tiene un buffer de recepcioacuten
servicio de equilibrado de velocidad equilibrar la velocidad de enviacuteo a la de la aplicacioacuten vaciando el buffer de recepcioacutenla aplicacioacuten puede ser
lenta leyendo del buffer
el emisor no saturaraacuteel buffer del receptor
a base de enviar mucho muy seguido
control de flujoTCP Control de flujo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-82
TCP control de flujo coacutemo funciona
(suponer que el receptor TCP descarta segmentos fuera de orden)hay sitio en el buffer
RcvWindow = RcvBuffer -[LastByteRcvd - LastByteRead]
el receptor anuncia el espacio libre incluyendo el valor RcvWindow en los segmentosel emisor limita los datos sin ACK a RcvWindow
garantiza que el buffer de recepcioacuten no se desborda
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-83
TCP lsquoRound Trip Timersquo y lsquoTimeoutrsquo
P iquestcoacutemo fijar el tiempo de lsquotimeoutrsquo de TCPmaacutes que RTT
pero RTT variacuteasi demasiado corto lsquotimeoutrsquo prematuro
retransmisiones innecesarias
si demasiado largo reaccioacuten lenta a peacuterdidas
P iquestcoacutemo estimar RTTSampleRTT tiempo medido desde transmisioacuten de un segmento hasta recepcioacuten de ACK
ignorar retransmisionesSampleRTT variaraacute queremos un valor maacutes ldquoestablerdquo
promedio de varias mediciones recientes no el valor actual
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-84
TCP lsquoRound Trip Timersquo y lsquoTimeoutrsquo
EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT
media moacutevil ponderada exponencialla influencia de una muestra pasada decrece exponencialmentevalor tiacutepico α = 0125
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-85
Ejemplo de estimacioacuten de RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106time (seconnds)
RTT
(mill
iseco
nds)
SampleRTT Estimated RTT
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-86
TCP lsquoRound Trip Timersquo y lsquoTimeoutrsquoFijar el tiempo de expiracioacuten (lsquotimeoutrsquo)
EstimatedRTT maacutes ldquomargen de seguridadrdquogran variacioacuten en EstimatedRTT -gt mayor margen de seguridad
primero estimar cuaacutento SampleRTT se desviacutea de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-β)DevRTT +β|SampleRTT-EstimatedRTT|
(tiacutepicamente β = 025)
Entonces fijar el tiempo de expiracioacuten
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
Algoritmo de Karn
Si recibimos el reconocimiento de un paquete retransmitido no tenemos forma de saber a cuaacutel de las retransmisiones corresponde ese reconocimientoPor ello se ignoran los paquetes retransmitidos a la hora de computar el RTTEste procedimiento se denomina algoritmo de Karn
3-87Capa de TransporteRauacutel Duraacuten Nacho Peacuterez v14
3-88
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacuten transferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-89
Principios de control de la congestioacuten
Congestioacuteninformal ldquodemasiadas fuentes enviando demasiados datos demasiado deprisa para que la red lo pueda asimilarrdquoiexcliexcldiferente a control de flujosiacutentomas
paquetes perdidos (desbordamiento de bufferes en los routers)grandes retardos (encolado en los bufferes de los routers)iexcliexclun problema ldquotop-10rdquo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-90
Formas de abordar el control de congestioacuten
control de terminal a terminalno hay realimentacioacuten expliacutecita de la redla congestioacuten se deduce por el retardo y las peacuterdidas observadas por los terminaleseste es el meacutetodo de TCP
control asistido por la redlos routers proporcionan realimentacioacuten a los terminales
un bit que indica la congestioacuten (SNA DECnet TCPIP ECN ATM)indicacioacuten expliacutecita de la tasa a la que el emisor deberiacutea enviar
Dos formas principales de abordarla
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-91
Caso de estudio servicio ABR de las redes ATM
ABR lsquoAvailable Bit Ratersquo(Tasa de bits disponible)
ldquoservicio elaacutesticordquosi la ruta del emisor ldquoinfra-cargadardquo
el emisor deberiacutea usar el ancho de banda disponible
si la ruta del emisor estaacutecongestionada
el emisor se limita a la tasa garantizada
ceacutelulas RM (lsquoresource managementrsquo gestioacuten de recursos) enviado por el emisor intercalado con las celdas de datoslos bits en las celdas RM se rellenan por los switches (ldquoasistido por la redrdquo)
bit NI no hay mejora en la velocidad (congestioacuten suave)bit CI indica congestioacuten
las celdas RM se devuelven al emisor por el receptor sin modificar
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-92
Caso de estudio servicio ABR de las redes ATM
campo ER (lsquoexplicit ratersquo tasa expliacutecita) de 2 bytes en celda RM
un switch congestionado puede rebajar el valor ERla tasa del emisor es asiacute la maacutexima que puede aguantar la ruta
bit EFCI en celdas de datos se pone a 1 en switch congestionado
si la celda que precede a la RM tiene EFCI a 1 el emisor pone a1 el bit CI en la celda RM devueltaRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-93
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacuten transferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-94
control de congestioacuten en TCP incremento aditivo decremento multiplicativo
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
filosofiacutea incrementar la tasa de transmisioacuten (tamantildeo de la ventana) sondeando el ancho de banda accesible hasta que hay peacuterdidas
incremento aditivo incrementar cwnd en 1 MSS cada RTT hasta que haya peacuterdidasdecremento multiplicativo dividir cwnd por 2 cuando las haya
tiempo
cwnd
tam
antildeo
de la
ven
tana
co
n co
nges
tioacuten
diente de sierra sondeo del ancho
de banda
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-95
Control de congestioacuten TCP detalles
el emisor limita la transmisioacutenLastByteSent-LastByteAcked
le cwnd
lsquogrosso modorsquo
cwnd es dinaacutemica funcioacuten de la congestioacuten de la red percibida
iquestCoacutemo percibe el emisor la congestioacutenevento de peacuterdida = expiracioacuten o 3 ACKs duplicadosel emisor reduce la tasa (cwnd) tras un evento de peacuterdida
3 mecanismosAIMDarranque lentoconservador tras eventos de expiracioacuten
tasa = cwndRTT Bytess
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-96
TCP Arranque lento
cuando se inicia la conexioacuten la tasa se incrementa exponencialmente hasta la primera peacuterdida
inicialmente cwnd = 1 MSScwnd se dobla cada RTTse incrementa cwnd con cada ACK recibido
resumen la tasa inicial es baja pero crece exponencialmente raacutepido
Host A
un segmento
RTT
Host B
tiempo
2 segmentos
4 segmentos
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-97
Refinado deduccioacuten de peacuterdidastras 3 ACKs duplicados
cwnd se divide por 2la ventana ya crece linealmente
pero tras una expiracioacutencwnd en cambio se pone a 1 MSS la ventana entonces crece exponencialmentehasta un umbral luego linealmente
3 ACKs duplicados indica que la red es capaz de entregar algunos segmentos
expiracioacuten indica una situacioacuten de congestioacuten ldquomaacutes alarmanterdquo
Filosofiacutea
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-98
RefinadoP iquestcuaacutendo deberiacutea
pasarse de incremento exponencial a lineal
R cuando cwnd llegue a 12 de su valor antes de la expiracioacuten
Implementacioacutenvariable ssthreshcon una peacuterdida ssthreshse pone a 12 de cwndjusto antes de la peacuterdida
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-99
Resumen Control de congestioacuten TCP
expiracioacutenssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmitir segmento que falta
Λcwnd gt ssthresh
evitacioacuten decongestion
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmitir nuevo(s) segmento(s) seguacuten se pueda
ACK nuevo
dupACKcount++ACK duplicado
recuperacioacuten raacutepida
cwnd = cwnd + MSStransmitir nuevo(s) segmento(s) seguacuten se pueda
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmitir segmento que falta
dupACKcount == 3
expiracioacutenssthresh = cwnd2
cwnd = 1 dupACKcount = 0
retransmitir segmento que faltassthresh= cwnd2
cwnd = ssthresh + 3retransmitir segmento que falta
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
ACK nuevo
arranque lento
expiracioacutenssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmitir segmento que falta
cwnd = cwnd+MSSdupACKcount = 0transmitir nuevo(s) segmento(s) seguacuten se pueda
ACK nuevodupACKcount++ACK duplicado
Λcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NewACK
NewACK
NewACK
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-100
eficiencia de TCP
iquestcuaacutel es la tasa media de TCP en funcioacuten del tamantildeo de ventana y RTT
ignorar el arranque raacutepidosea W el tamantildeo de la ventana cuando ocurre una peacuterdida
cuando la ventana es W la tasa es WRTTjusto tras la peacuterdida la ventana pasa a W2 y la tasa a W2RTTla tasa media es 075 WRTT
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-101
Futuros de TCP TCP sobre ldquotubos largos y gruesosrdquo
ejemplo segmentos de 1500 bytes RTT 100ms se quiere tasa de 10 Gbps requiere tamantildeo de ventana W = 83333 segmentos en traacutensitotasa de transferencia en funcioacuten de la tasa de peacuterdidas
L = 210-10 iexcliexcluna tasa de peacuterdidas muy bajanuevas versiones de TCP para alta velocidad
LRTTMSSsdot221
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-102
objetivo de equidad si K sesiones TCP comparten el mismo enlace cuello de botella de ancho de banda R cada uno deberiacutea tener una tasa media de RK
conexioacuten TCP 1
router cuello de botella
capacidad Rconexioacuten TCP 2
Equidad en TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-103
iquestPor queacute es equitativoTCP2 sesiones que compiten
el incremento aditivo da una pendiente de 1 en los incrementosel decremento multiplicativo decrementa la tasa proporcionalmente
R
R
reparto equitativo del ancho de banda
tasa de transferencia
de la conexioacuten 1
tasa
de
tran
sfer
enc i
a
de la
con
exioacute
n 2
evitacioacuten de congestioacuten incremento aditivopeacuterdida decrementar ventana en un factor de 2evitacioacuten de congestioacuten incremento aditivo
peacuterdida decrementar ventana en un factor de 2
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-104
Equidad (maacutes)Equidad y UDP
las aplicaciones multimedia a menudo no usan TCP
no quieren que la tasa de transf se limite por el control de congestioacuten
por eso usan UDPenviacutean audiovideo a tasa constante toleran peacuterdida de paquetes
Equidad y conexiones TCP paralelasnada impide a una aplicacioacuten abrir conexiones paralelas entre 2 hostslos navegadores lo hacenejemplo enlace de tasa R permite 9 conexiones
una aplicacioacuten pide 1 TCP obtiene tasa R10una aplicacioacuten pide 11 TCPs iexcliexclobtiene tasa R2
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-105
Capiacutetulo 3 Resumenprincipios detraacutes de los servicios de la capa de transporte
multiplexacioacuten desmultiplexacioacutentransferencia de datos fiablecontrol de flujocontrol de congestioacuten
instanciacioacuten e implementacioacuten en Internet
UDPTCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
Algoritmo de Nagle [RFC896]
Evento en emisor
Llegada de datos de la aplicacioacutenHay ACKs pendientes
Llegada de un ACK pendiente
Llegada de datos de la aplicacioacutenNo hay ACKs pendientes
Llegada de datos de la aplicacioacutenNo queda sitio en el buffer delemisor
Accioacuten en emisor
Acumular datos en el buffer del emisor
Inmediatamente enviar todos los segmen-tos acumulados en buffer
Inmediatamente enviar datos al receptor
Inmediatamente enviar datos si lo permi-te la ventana aunque no se hayan reci-bido ACKs previos
Capa de Transporte 3-79Rauacutel Duraacuten Nacho Peacuterez v14
3-80
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacutentransferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-81
en TCP el receptor tiene un buffer de recepcioacuten
servicio de equilibrado de velocidad equilibrar la velocidad de enviacuteo a la de la aplicacioacuten vaciando el buffer de recepcioacutenla aplicacioacuten puede ser
lenta leyendo del buffer
el emisor no saturaraacuteel buffer del receptor
a base de enviar mucho muy seguido
control de flujoTCP Control de flujo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-82
TCP control de flujo coacutemo funciona
(suponer que el receptor TCP descarta segmentos fuera de orden)hay sitio en el buffer
RcvWindow = RcvBuffer -[LastByteRcvd - LastByteRead]
el receptor anuncia el espacio libre incluyendo el valor RcvWindow en los segmentosel emisor limita los datos sin ACK a RcvWindow
garantiza que el buffer de recepcioacuten no se desborda
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-83
TCP lsquoRound Trip Timersquo y lsquoTimeoutrsquo
P iquestcoacutemo fijar el tiempo de lsquotimeoutrsquo de TCPmaacutes que RTT
pero RTT variacuteasi demasiado corto lsquotimeoutrsquo prematuro
retransmisiones innecesarias
si demasiado largo reaccioacuten lenta a peacuterdidas
P iquestcoacutemo estimar RTTSampleRTT tiempo medido desde transmisioacuten de un segmento hasta recepcioacuten de ACK
ignorar retransmisionesSampleRTT variaraacute queremos un valor maacutes ldquoestablerdquo
promedio de varias mediciones recientes no el valor actual
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-84
TCP lsquoRound Trip Timersquo y lsquoTimeoutrsquo
EstimatedRTT = (1- α)EstimatedRTT + αSampleRTT
media moacutevil ponderada exponencialla influencia de una muestra pasada decrece exponencialmentevalor tiacutepico α = 0125
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-85
Ejemplo de estimacioacuten de RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106time (seconnds)
RTT
(mill
iseco
nds)
SampleRTT Estimated RTT
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-86
TCP lsquoRound Trip Timersquo y lsquoTimeoutrsquoFijar el tiempo de expiracioacuten (lsquotimeoutrsquo)
EstimatedRTT maacutes ldquomargen de seguridadrdquogran variacioacuten en EstimatedRTT -gt mayor margen de seguridad
primero estimar cuaacutento SampleRTT se desviacutea de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-β)DevRTT +β|SampleRTT-EstimatedRTT|
(tiacutepicamente β = 025)
Entonces fijar el tiempo de expiracioacuten
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
Algoritmo de Karn
Si recibimos el reconocimiento de un paquete retransmitido no tenemos forma de saber a cuaacutel de las retransmisiones corresponde ese reconocimientoPor ello se ignoran los paquetes retransmitidos a la hora de computar el RTTEste procedimiento se denomina algoritmo de Karn
3-87Capa de TransporteRauacutel Duraacuten Nacho Peacuterez v14
3-88
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacuten transferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-89
Principios de control de la congestioacuten
Congestioacuteninformal ldquodemasiadas fuentes enviando demasiados datos demasiado deprisa para que la red lo pueda asimilarrdquoiexcliexcldiferente a control de flujosiacutentomas
paquetes perdidos (desbordamiento de bufferes en los routers)grandes retardos (encolado en los bufferes de los routers)iexcliexclun problema ldquotop-10rdquo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-90
Formas de abordar el control de congestioacuten
control de terminal a terminalno hay realimentacioacuten expliacutecita de la redla congestioacuten se deduce por el retardo y las peacuterdidas observadas por los terminaleseste es el meacutetodo de TCP
control asistido por la redlos routers proporcionan realimentacioacuten a los terminales
un bit que indica la congestioacuten (SNA DECnet TCPIP ECN ATM)indicacioacuten expliacutecita de la tasa a la que el emisor deberiacutea enviar
Dos formas principales de abordarla
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-91
Caso de estudio servicio ABR de las redes ATM
ABR lsquoAvailable Bit Ratersquo(Tasa de bits disponible)
ldquoservicio elaacutesticordquosi la ruta del emisor ldquoinfra-cargadardquo
el emisor deberiacutea usar el ancho de banda disponible
si la ruta del emisor estaacutecongestionada
el emisor se limita a la tasa garantizada
ceacutelulas RM (lsquoresource managementrsquo gestioacuten de recursos) enviado por el emisor intercalado con las celdas de datoslos bits en las celdas RM se rellenan por los switches (ldquoasistido por la redrdquo)
bit NI no hay mejora en la velocidad (congestioacuten suave)bit CI indica congestioacuten
las celdas RM se devuelven al emisor por el receptor sin modificar
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-92
Caso de estudio servicio ABR de las redes ATM
campo ER (lsquoexplicit ratersquo tasa expliacutecita) de 2 bytes en celda RM
un switch congestionado puede rebajar el valor ERla tasa del emisor es asiacute la maacutexima que puede aguantar la ruta
bit EFCI en celdas de datos se pone a 1 en switch congestionado
si la celda que precede a la RM tiene EFCI a 1 el emisor pone a1 el bit CI en la celda RM devueltaRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-93
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacuten transferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-94
control de congestioacuten en TCP incremento aditivo decremento multiplicativo
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
filosofiacutea incrementar la tasa de transmisioacuten (tamantildeo de la ventana) sondeando el ancho de banda accesible hasta que hay peacuterdidas
incremento aditivo incrementar cwnd en 1 MSS cada RTT hasta que haya peacuterdidasdecremento multiplicativo dividir cwnd por 2 cuando las haya
tiempo
cwnd
tam
antildeo
de la
ven
tana
co
n co
nges
tioacuten
diente de sierra sondeo del ancho
de banda
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-95
Control de congestioacuten TCP detalles
el emisor limita la transmisioacutenLastByteSent-LastByteAcked
le cwnd
lsquogrosso modorsquo
cwnd es dinaacutemica funcioacuten de la congestioacuten de la red percibida
iquestCoacutemo percibe el emisor la congestioacutenevento de peacuterdida = expiracioacuten o 3 ACKs duplicadosel emisor reduce la tasa (cwnd) tras un evento de peacuterdida
3 mecanismosAIMDarranque lentoconservador tras eventos de expiracioacuten
tasa = cwndRTT Bytess
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-96
TCP Arranque lento
cuando se inicia la conexioacuten la tasa se incrementa exponencialmente hasta la primera peacuterdida
inicialmente cwnd = 1 MSScwnd se dobla cada RTTse incrementa cwnd con cada ACK recibido
resumen la tasa inicial es baja pero crece exponencialmente raacutepido
Host A
un segmento
RTT
Host B
tiempo
2 segmentos
4 segmentos
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-97
Refinado deduccioacuten de peacuterdidastras 3 ACKs duplicados
cwnd se divide por 2la ventana ya crece linealmente
pero tras una expiracioacutencwnd en cambio se pone a 1 MSS la ventana entonces crece exponencialmentehasta un umbral luego linealmente
3 ACKs duplicados indica que la red es capaz de entregar algunos segmentos
expiracioacuten indica una situacioacuten de congestioacuten ldquomaacutes alarmanterdquo
Filosofiacutea
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-98
RefinadoP iquestcuaacutendo deberiacutea
pasarse de incremento exponencial a lineal
R cuando cwnd llegue a 12 de su valor antes de la expiracioacuten
Implementacioacutenvariable ssthreshcon una peacuterdida ssthreshse pone a 12 de cwndjusto antes de la peacuterdida
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-99
Resumen Control de congestioacuten TCP
expiracioacutenssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmitir segmento que falta
Λcwnd gt ssthresh
evitacioacuten decongestion
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmitir nuevo(s) segmento(s) seguacuten se pueda
ACK nuevo
dupACKcount++ACK duplicado
recuperacioacuten raacutepida
cwnd = cwnd + MSStransmitir nuevo(s) segmento(s) seguacuten se pueda
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmitir segmento que falta
dupACKcount == 3
expiracioacutenssthresh = cwnd2
cwnd = 1 dupACKcount = 0
retransmitir segmento que faltassthresh= cwnd2
cwnd = ssthresh + 3retransmitir segmento que falta
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
ACK nuevo
arranque lento
expiracioacutenssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmitir segmento que falta
cwnd = cwnd+MSSdupACKcount = 0transmitir nuevo(s) segmento(s) seguacuten se pueda
ACK nuevodupACKcount++ACK duplicado
Λcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NewACK
NewACK
NewACK
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-100
eficiencia de TCP
iquestcuaacutel es la tasa media de TCP en funcioacuten del tamantildeo de ventana y RTT
ignorar el arranque raacutepidosea W el tamantildeo de la ventana cuando ocurre una peacuterdida
cuando la ventana es W la tasa es WRTTjusto tras la peacuterdida la ventana pasa a W2 y la tasa a W2RTTla tasa media es 075 WRTT
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-101
Futuros de TCP TCP sobre ldquotubos largos y gruesosrdquo
ejemplo segmentos de 1500 bytes RTT 100ms se quiere tasa de 10 Gbps requiere tamantildeo de ventana W = 83333 segmentos en traacutensitotasa de transferencia en funcioacuten de la tasa de peacuterdidas
L = 210-10 iexcliexcluna tasa de peacuterdidas muy bajanuevas versiones de TCP para alta velocidad
LRTTMSSsdot221
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-102
objetivo de equidad si K sesiones TCP comparten el mismo enlace cuello de botella de ancho de banda R cada uno deberiacutea tener una tasa media de RK
conexioacuten TCP 1
router cuello de botella
capacidad Rconexioacuten TCP 2
Equidad en TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-103
iquestPor queacute es equitativoTCP2 sesiones que compiten
el incremento aditivo da una pendiente de 1 en los incrementosel decremento multiplicativo decrementa la tasa proporcionalmente
R
R
reparto equitativo del ancho de banda
tasa de transferencia
de la conexioacuten 1
tasa
de
tran
sfer
enc i
a
de la
con
exioacute
n 2
evitacioacuten de congestioacuten incremento aditivopeacuterdida decrementar ventana en un factor de 2evitacioacuten de congestioacuten incremento aditivo
peacuterdida decrementar ventana en un factor de 2
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-104
Equidad (maacutes)Equidad y UDP
las aplicaciones multimedia a menudo no usan TCP
no quieren que la tasa de transf se limite por el control de congestioacuten
por eso usan UDPenviacutean audiovideo a tasa constante toleran peacuterdida de paquetes
Equidad y conexiones TCP paralelasnada impide a una aplicacioacuten abrir conexiones paralelas entre 2 hostslos navegadores lo hacenejemplo enlace de tasa R permite 9 conexiones
una aplicacioacuten pide 1 TCP obtiene tasa R10una aplicacioacuten pide 11 TCPs iexcliexclobtiene tasa R2
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-105
Capiacutetulo 3 Resumenprincipios detraacutes de los servicios de la capa de transporte
multiplexacioacuten desmultiplexacioacutentransferencia de datos fiablecontrol de flujocontrol de congestioacuten
instanciacioacuten e implementacioacuten en Internet
UDPTCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-85
Ejemplo de estimacioacuten de RTTRTT gaiacsumassedu to fantasiaeurecomfr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106time (seconnds)
RTT
(mill
iseco
nds)
SampleRTT Estimated RTT
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-86
TCP lsquoRound Trip Timersquo y lsquoTimeoutrsquoFijar el tiempo de expiracioacuten (lsquotimeoutrsquo)
EstimatedRTT maacutes ldquomargen de seguridadrdquogran variacioacuten en EstimatedRTT -gt mayor margen de seguridad
primero estimar cuaacutento SampleRTT se desviacutea de EstimatedRTT
TimeoutInterval = EstimatedRTT + 4DevRTT
DevRTT = (1-β)DevRTT +β|SampleRTT-EstimatedRTT|
(tiacutepicamente β = 025)
Entonces fijar el tiempo de expiracioacuten
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
Algoritmo de Karn
Si recibimos el reconocimiento de un paquete retransmitido no tenemos forma de saber a cuaacutel de las retransmisiones corresponde ese reconocimientoPor ello se ignoran los paquetes retransmitidos a la hora de computar el RTTEste procedimiento se denomina algoritmo de Karn
3-87Capa de TransporteRauacutel Duraacuten Nacho Peacuterez v14
3-88
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacuten transferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-89
Principios de control de la congestioacuten
Congestioacuteninformal ldquodemasiadas fuentes enviando demasiados datos demasiado deprisa para que la red lo pueda asimilarrdquoiexcliexcldiferente a control de flujosiacutentomas
paquetes perdidos (desbordamiento de bufferes en los routers)grandes retardos (encolado en los bufferes de los routers)iexcliexclun problema ldquotop-10rdquo
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-90
Formas de abordar el control de congestioacuten
control de terminal a terminalno hay realimentacioacuten expliacutecita de la redla congestioacuten se deduce por el retardo y las peacuterdidas observadas por los terminaleseste es el meacutetodo de TCP
control asistido por la redlos routers proporcionan realimentacioacuten a los terminales
un bit que indica la congestioacuten (SNA DECnet TCPIP ECN ATM)indicacioacuten expliacutecita de la tasa a la que el emisor deberiacutea enviar
Dos formas principales de abordarla
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-91
Caso de estudio servicio ABR de las redes ATM
ABR lsquoAvailable Bit Ratersquo(Tasa de bits disponible)
ldquoservicio elaacutesticordquosi la ruta del emisor ldquoinfra-cargadardquo
el emisor deberiacutea usar el ancho de banda disponible
si la ruta del emisor estaacutecongestionada
el emisor se limita a la tasa garantizada
ceacutelulas RM (lsquoresource managementrsquo gestioacuten de recursos) enviado por el emisor intercalado con las celdas de datoslos bits en las celdas RM se rellenan por los switches (ldquoasistido por la redrdquo)
bit NI no hay mejora en la velocidad (congestioacuten suave)bit CI indica congestioacuten
las celdas RM se devuelven al emisor por el receptor sin modificar
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-92
Caso de estudio servicio ABR de las redes ATM
campo ER (lsquoexplicit ratersquo tasa expliacutecita) de 2 bytes en celda RM
un switch congestionado puede rebajar el valor ERla tasa del emisor es asiacute la maacutexima que puede aguantar la ruta
bit EFCI en celdas de datos se pone a 1 en switch congestionado
si la celda que precede a la RM tiene EFCI a 1 el emisor pone a1 el bit CI en la celda RM devueltaRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-93
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacuten transferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-94
control de congestioacuten en TCP incremento aditivo decremento multiplicativo
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
filosofiacutea incrementar la tasa de transmisioacuten (tamantildeo de la ventana) sondeando el ancho de banda accesible hasta que hay peacuterdidas
incremento aditivo incrementar cwnd en 1 MSS cada RTT hasta que haya peacuterdidasdecremento multiplicativo dividir cwnd por 2 cuando las haya
tiempo
cwnd
tam
antildeo
de la
ven
tana
co
n co
nges
tioacuten
diente de sierra sondeo del ancho
de banda
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-95
Control de congestioacuten TCP detalles
el emisor limita la transmisioacutenLastByteSent-LastByteAcked
le cwnd
lsquogrosso modorsquo
cwnd es dinaacutemica funcioacuten de la congestioacuten de la red percibida
iquestCoacutemo percibe el emisor la congestioacutenevento de peacuterdida = expiracioacuten o 3 ACKs duplicadosel emisor reduce la tasa (cwnd) tras un evento de peacuterdida
3 mecanismosAIMDarranque lentoconservador tras eventos de expiracioacuten
tasa = cwndRTT Bytess
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-96
TCP Arranque lento
cuando se inicia la conexioacuten la tasa se incrementa exponencialmente hasta la primera peacuterdida
inicialmente cwnd = 1 MSScwnd se dobla cada RTTse incrementa cwnd con cada ACK recibido
resumen la tasa inicial es baja pero crece exponencialmente raacutepido
Host A
un segmento
RTT
Host B
tiempo
2 segmentos
4 segmentos
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-97
Refinado deduccioacuten de peacuterdidastras 3 ACKs duplicados
cwnd se divide por 2la ventana ya crece linealmente
pero tras una expiracioacutencwnd en cambio se pone a 1 MSS la ventana entonces crece exponencialmentehasta un umbral luego linealmente
3 ACKs duplicados indica que la red es capaz de entregar algunos segmentos
expiracioacuten indica una situacioacuten de congestioacuten ldquomaacutes alarmanterdquo
Filosofiacutea
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-98
RefinadoP iquestcuaacutendo deberiacutea
pasarse de incremento exponencial a lineal
R cuando cwnd llegue a 12 de su valor antes de la expiracioacuten
Implementacioacutenvariable ssthreshcon una peacuterdida ssthreshse pone a 12 de cwndjusto antes de la peacuterdida
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-99
Resumen Control de congestioacuten TCP
expiracioacutenssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmitir segmento que falta
Λcwnd gt ssthresh
evitacioacuten decongestion
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmitir nuevo(s) segmento(s) seguacuten se pueda
ACK nuevo
dupACKcount++ACK duplicado
recuperacioacuten raacutepida
cwnd = cwnd + MSStransmitir nuevo(s) segmento(s) seguacuten se pueda
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmitir segmento que falta
dupACKcount == 3
expiracioacutenssthresh = cwnd2
cwnd = 1 dupACKcount = 0
retransmitir segmento que faltassthresh= cwnd2
cwnd = ssthresh + 3retransmitir segmento que falta
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
ACK nuevo
arranque lento
expiracioacutenssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmitir segmento que falta
cwnd = cwnd+MSSdupACKcount = 0transmitir nuevo(s) segmento(s) seguacuten se pueda
ACK nuevodupACKcount++ACK duplicado
Λcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NewACK
NewACK
NewACK
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-100
eficiencia de TCP
iquestcuaacutel es la tasa media de TCP en funcioacuten del tamantildeo de ventana y RTT
ignorar el arranque raacutepidosea W el tamantildeo de la ventana cuando ocurre una peacuterdida
cuando la ventana es W la tasa es WRTTjusto tras la peacuterdida la ventana pasa a W2 y la tasa a W2RTTla tasa media es 075 WRTT
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-101
Futuros de TCP TCP sobre ldquotubos largos y gruesosrdquo
ejemplo segmentos de 1500 bytes RTT 100ms se quiere tasa de 10 Gbps requiere tamantildeo de ventana W = 83333 segmentos en traacutensitotasa de transferencia en funcioacuten de la tasa de peacuterdidas
L = 210-10 iexcliexcluna tasa de peacuterdidas muy bajanuevas versiones de TCP para alta velocidad
LRTTMSSsdot221
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-102
objetivo de equidad si K sesiones TCP comparten el mismo enlace cuello de botella de ancho de banda R cada uno deberiacutea tener una tasa media de RK
conexioacuten TCP 1
router cuello de botella
capacidad Rconexioacuten TCP 2
Equidad en TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-103
iquestPor queacute es equitativoTCP2 sesiones que compiten
el incremento aditivo da una pendiente de 1 en los incrementosel decremento multiplicativo decrementa la tasa proporcionalmente
R
R
reparto equitativo del ancho de banda
tasa de transferencia
de la conexioacuten 1
tasa
de
tran
sfer
enc i
a
de la
con
exioacute
n 2
evitacioacuten de congestioacuten incremento aditivopeacuterdida decrementar ventana en un factor de 2evitacioacuten de congestioacuten incremento aditivo
peacuterdida decrementar ventana en un factor de 2
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-104
Equidad (maacutes)Equidad y UDP
las aplicaciones multimedia a menudo no usan TCP
no quieren que la tasa de transf se limite por el control de congestioacuten
por eso usan UDPenviacutean audiovideo a tasa constante toleran peacuterdida de paquetes
Equidad y conexiones TCP paralelasnada impide a una aplicacioacuten abrir conexiones paralelas entre 2 hostslos navegadores lo hacenejemplo enlace de tasa R permite 9 conexiones
una aplicacioacuten pide 1 TCP obtiene tasa R10una aplicacioacuten pide 11 TCPs iexcliexclobtiene tasa R2
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-105
Capiacutetulo 3 Resumenprincipios detraacutes de los servicios de la capa de transporte
multiplexacioacuten desmultiplexacioacutentransferencia de datos fiablecontrol de flujocontrol de congestioacuten
instanciacioacuten e implementacioacuten en Internet
UDPTCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-91
Caso de estudio servicio ABR de las redes ATM
ABR lsquoAvailable Bit Ratersquo(Tasa de bits disponible)
ldquoservicio elaacutesticordquosi la ruta del emisor ldquoinfra-cargadardquo
el emisor deberiacutea usar el ancho de banda disponible
si la ruta del emisor estaacutecongestionada
el emisor se limita a la tasa garantizada
ceacutelulas RM (lsquoresource managementrsquo gestioacuten de recursos) enviado por el emisor intercalado con las celdas de datoslos bits en las celdas RM se rellenan por los switches (ldquoasistido por la redrdquo)
bit NI no hay mejora en la velocidad (congestioacuten suave)bit CI indica congestioacuten
las celdas RM se devuelven al emisor por el receptor sin modificar
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-92
Caso de estudio servicio ABR de las redes ATM
campo ER (lsquoexplicit ratersquo tasa expliacutecita) de 2 bytes en celda RM
un switch congestionado puede rebajar el valor ERla tasa del emisor es asiacute la maacutexima que puede aguantar la ruta
bit EFCI en celdas de datos se pone a 1 en switch congestionado
si la celda que precede a la RM tiene EFCI a 1 el emisor pone a1 el bit CI en la celda RM devueltaRauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-93
Capiacutetulo 3 iacutendice
31 Servicios de la capa de transporte
32 Multiplexacioacuten y desmultiplexacioacuten
33 Transporte sin conexioacuten UDP
34 Principios de transferencia de datos fiable
35 Transporte orientado a conexioacuten TCP
estructura de segmentogestioacuten de conexioacuten transferencia de datos fiablecontrol de flujoestimacioacuten de RTT y temporizacioacuten
36 Principios de control de congestioacuten
37 Control de congestioacuten TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-94
control de congestioacuten en TCP incremento aditivo decremento multiplicativo
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
filosofiacutea incrementar la tasa de transmisioacuten (tamantildeo de la ventana) sondeando el ancho de banda accesible hasta que hay peacuterdidas
incremento aditivo incrementar cwnd en 1 MSS cada RTT hasta que haya peacuterdidasdecremento multiplicativo dividir cwnd por 2 cuando las haya
tiempo
cwnd
tam
antildeo
de la
ven
tana
co
n co
nges
tioacuten
diente de sierra sondeo del ancho
de banda
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-95
Control de congestioacuten TCP detalles
el emisor limita la transmisioacutenLastByteSent-LastByteAcked
le cwnd
lsquogrosso modorsquo
cwnd es dinaacutemica funcioacuten de la congestioacuten de la red percibida
iquestCoacutemo percibe el emisor la congestioacutenevento de peacuterdida = expiracioacuten o 3 ACKs duplicadosel emisor reduce la tasa (cwnd) tras un evento de peacuterdida
3 mecanismosAIMDarranque lentoconservador tras eventos de expiracioacuten
tasa = cwndRTT Bytess
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-96
TCP Arranque lento
cuando se inicia la conexioacuten la tasa se incrementa exponencialmente hasta la primera peacuterdida
inicialmente cwnd = 1 MSScwnd se dobla cada RTTse incrementa cwnd con cada ACK recibido
resumen la tasa inicial es baja pero crece exponencialmente raacutepido
Host A
un segmento
RTT
Host B
tiempo
2 segmentos
4 segmentos
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-97
Refinado deduccioacuten de peacuterdidastras 3 ACKs duplicados
cwnd se divide por 2la ventana ya crece linealmente
pero tras una expiracioacutencwnd en cambio se pone a 1 MSS la ventana entonces crece exponencialmentehasta un umbral luego linealmente
3 ACKs duplicados indica que la red es capaz de entregar algunos segmentos
expiracioacuten indica una situacioacuten de congestioacuten ldquomaacutes alarmanterdquo
Filosofiacutea
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-98
RefinadoP iquestcuaacutendo deberiacutea
pasarse de incremento exponencial a lineal
R cuando cwnd llegue a 12 de su valor antes de la expiracioacuten
Implementacioacutenvariable ssthreshcon una peacuterdida ssthreshse pone a 12 de cwndjusto antes de la peacuterdida
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-99
Resumen Control de congestioacuten TCP
expiracioacutenssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmitir segmento que falta
Λcwnd gt ssthresh
evitacioacuten decongestion
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmitir nuevo(s) segmento(s) seguacuten se pueda
ACK nuevo
dupACKcount++ACK duplicado
recuperacioacuten raacutepida
cwnd = cwnd + MSStransmitir nuevo(s) segmento(s) seguacuten se pueda
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmitir segmento que falta
dupACKcount == 3
expiracioacutenssthresh = cwnd2
cwnd = 1 dupACKcount = 0
retransmitir segmento que faltassthresh= cwnd2
cwnd = ssthresh + 3retransmitir segmento que falta
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
ACK nuevo
arranque lento
expiracioacutenssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmitir segmento que falta
cwnd = cwnd+MSSdupACKcount = 0transmitir nuevo(s) segmento(s) seguacuten se pueda
ACK nuevodupACKcount++ACK duplicado
Λcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NewACK
NewACK
NewACK
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-100
eficiencia de TCP
iquestcuaacutel es la tasa media de TCP en funcioacuten del tamantildeo de ventana y RTT
ignorar el arranque raacutepidosea W el tamantildeo de la ventana cuando ocurre una peacuterdida
cuando la ventana es W la tasa es WRTTjusto tras la peacuterdida la ventana pasa a W2 y la tasa a W2RTTla tasa media es 075 WRTT
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-101
Futuros de TCP TCP sobre ldquotubos largos y gruesosrdquo
ejemplo segmentos de 1500 bytes RTT 100ms se quiere tasa de 10 Gbps requiere tamantildeo de ventana W = 83333 segmentos en traacutensitotasa de transferencia en funcioacuten de la tasa de peacuterdidas
L = 210-10 iexcliexcluna tasa de peacuterdidas muy bajanuevas versiones de TCP para alta velocidad
LRTTMSSsdot221
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-102
objetivo de equidad si K sesiones TCP comparten el mismo enlace cuello de botella de ancho de banda R cada uno deberiacutea tener una tasa media de RK
conexioacuten TCP 1
router cuello de botella
capacidad Rconexioacuten TCP 2
Equidad en TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-103
iquestPor queacute es equitativoTCP2 sesiones que compiten
el incremento aditivo da una pendiente de 1 en los incrementosel decremento multiplicativo decrementa la tasa proporcionalmente
R
R
reparto equitativo del ancho de banda
tasa de transferencia
de la conexioacuten 1
tasa
de
tran
sfer
enc i
a
de la
con
exioacute
n 2
evitacioacuten de congestioacuten incremento aditivopeacuterdida decrementar ventana en un factor de 2evitacioacuten de congestioacuten incremento aditivo
peacuterdida decrementar ventana en un factor de 2
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-104
Equidad (maacutes)Equidad y UDP
las aplicaciones multimedia a menudo no usan TCP
no quieren que la tasa de transf se limite por el control de congestioacuten
por eso usan UDPenviacutean audiovideo a tasa constante toleran peacuterdida de paquetes
Equidad y conexiones TCP paralelasnada impide a una aplicacioacuten abrir conexiones paralelas entre 2 hostslos navegadores lo hacenejemplo enlace de tasa R permite 9 conexiones
una aplicacioacuten pide 1 TCP obtiene tasa R10una aplicacioacuten pide 11 TCPs iexcliexclobtiene tasa R2
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-105
Capiacutetulo 3 Resumenprincipios detraacutes de los servicios de la capa de transporte
multiplexacioacuten desmultiplexacioacutentransferencia de datos fiablecontrol de flujocontrol de congestioacuten
instanciacioacuten e implementacioacuten en Internet
UDPTCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-97
Refinado deduccioacuten de peacuterdidastras 3 ACKs duplicados
cwnd se divide por 2la ventana ya crece linealmente
pero tras una expiracioacutencwnd en cambio se pone a 1 MSS la ventana entonces crece exponencialmentehasta un umbral luego linealmente
3 ACKs duplicados indica que la red es capaz de entregar algunos segmentos
expiracioacuten indica una situacioacuten de congestioacuten ldquomaacutes alarmanterdquo
Filosofiacutea
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-98
RefinadoP iquestcuaacutendo deberiacutea
pasarse de incremento exponencial a lineal
R cuando cwnd llegue a 12 de su valor antes de la expiracioacuten
Implementacioacutenvariable ssthreshcon una peacuterdida ssthreshse pone a 12 de cwndjusto antes de la peacuterdida
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-99
Resumen Control de congestioacuten TCP
expiracioacutenssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmitir segmento que falta
Λcwnd gt ssthresh
evitacioacuten decongestion
cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0
transmitir nuevo(s) segmento(s) seguacuten se pueda
ACK nuevo
dupACKcount++ACK duplicado
recuperacioacuten raacutepida
cwnd = cwnd + MSStransmitir nuevo(s) segmento(s) seguacuten se pueda
ACK duplicado
ssthresh= cwnd2cwnd = ssthresh + 3
retransmitir segmento que falta
dupACKcount == 3
expiracioacutenssthresh = cwnd2
cwnd = 1 dupACKcount = 0
retransmitir segmento que faltassthresh= cwnd2
cwnd = ssthresh + 3retransmitir segmento que falta
dupACKcount == 3cwnd = ssthreshdupACKcount = 0
ACK nuevo
arranque lento
expiracioacutenssthresh = cwnd2
cwnd = 1 MSSdupACKcount = 0
retransmitir segmento que falta
cwnd = cwnd+MSSdupACKcount = 0transmitir nuevo(s) segmento(s) seguacuten se pueda
ACK nuevodupACKcount++ACK duplicado
Λcwnd = 1 MSS
ssthresh = 64 KBdupACKcount = 0
NewACK
NewACK
NewACK
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-100
eficiencia de TCP
iquestcuaacutel es la tasa media de TCP en funcioacuten del tamantildeo de ventana y RTT
ignorar el arranque raacutepidosea W el tamantildeo de la ventana cuando ocurre una peacuterdida
cuando la ventana es W la tasa es WRTTjusto tras la peacuterdida la ventana pasa a W2 y la tasa a W2RTTla tasa media es 075 WRTT
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-101
Futuros de TCP TCP sobre ldquotubos largos y gruesosrdquo
ejemplo segmentos de 1500 bytes RTT 100ms se quiere tasa de 10 Gbps requiere tamantildeo de ventana W = 83333 segmentos en traacutensitotasa de transferencia en funcioacuten de la tasa de peacuterdidas
L = 210-10 iexcliexcluna tasa de peacuterdidas muy bajanuevas versiones de TCP para alta velocidad
LRTTMSSsdot221
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-102
objetivo de equidad si K sesiones TCP comparten el mismo enlace cuello de botella de ancho de banda R cada uno deberiacutea tener una tasa media de RK
conexioacuten TCP 1
router cuello de botella
capacidad Rconexioacuten TCP 2
Equidad en TCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-103
iquestPor queacute es equitativoTCP2 sesiones que compiten
el incremento aditivo da una pendiente de 1 en los incrementosel decremento multiplicativo decrementa la tasa proporcionalmente
R
R
reparto equitativo del ancho de banda
tasa de transferencia
de la conexioacuten 1
tasa
de
tran
sfer
enc i
a
de la
con
exioacute
n 2
evitacioacuten de congestioacuten incremento aditivopeacuterdida decrementar ventana en un factor de 2evitacioacuten de congestioacuten incremento aditivo
peacuterdida decrementar ventana en un factor de 2
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-104
Equidad (maacutes)Equidad y UDP
las aplicaciones multimedia a menudo no usan TCP
no quieren que la tasa de transf se limite por el control de congestioacuten
por eso usan UDPenviacutean audiovideo a tasa constante toleran peacuterdida de paquetes
Equidad y conexiones TCP paralelasnada impide a una aplicacioacuten abrir conexiones paralelas entre 2 hostslos navegadores lo hacenejemplo enlace de tasa R permite 9 conexiones
una aplicacioacuten pide 1 TCP obtiene tasa R10una aplicacioacuten pide 11 TCPs iexcliexclobtiene tasa R2
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-105
Capiacutetulo 3 Resumenprincipios detraacutes de los servicios de la capa de transporte
multiplexacioacuten desmultiplexacioacutentransferencia de datos fiablecontrol de flujocontrol de congestioacuten
instanciacioacuten e implementacioacuten en Internet
UDPTCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-103
iquestPor queacute es equitativoTCP2 sesiones que compiten
el incremento aditivo da una pendiente de 1 en los incrementosel decremento multiplicativo decrementa la tasa proporcionalmente
R
R
reparto equitativo del ancho de banda
tasa de transferencia
de la conexioacuten 1
tasa
de
tran
sfer
enc i
a
de la
con
exioacute
n 2
evitacioacuten de congestioacuten incremento aditivopeacuterdida decrementar ventana en un factor de 2evitacioacuten de congestioacuten incremento aditivo
peacuterdida decrementar ventana en un factor de 2
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-104
Equidad (maacutes)Equidad y UDP
las aplicaciones multimedia a menudo no usan TCP
no quieren que la tasa de transf se limite por el control de congestioacuten
por eso usan UDPenviacutean audiovideo a tasa constante toleran peacuterdida de paquetes
Equidad y conexiones TCP paralelasnada impide a una aplicacioacuten abrir conexiones paralelas entre 2 hostslos navegadores lo hacenejemplo enlace de tasa R permite 9 conexiones
una aplicacioacuten pide 1 TCP obtiene tasa R10una aplicacioacuten pide 11 TCPs iexcliexclobtiene tasa R2
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte
3-105
Capiacutetulo 3 Resumenprincipios detraacutes de los servicios de la capa de transporte
multiplexacioacuten desmultiplexacioacutentransferencia de datos fiablecontrol de flujocontrol de congestioacuten
instanciacioacuten e implementacioacuten en Internet
UDPTCP
Rauacutel Duraacuten Nacho Peacuterez v14 Capa de Transporte