Arquitectura de Redes, capítulo 3atc2.aut.uah.es/~nacho/AR/C3.2DPP.pdf · 3.1 Servicios de la capa...

53
3-1 Capítulo 3 La capa de transporte Redes de computadoras: Un enfoque descendente, 5 a edición. Jim Kurose, Keith Ross Pearson Educación, 2010. A note on the use of these ppt slides: We’re making these slides freely available to all (faculty, students, readers). They’re 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 (e.g., in a class) in substantially unaltered form, that you mention their source (after all, we’d 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! JFK/KWR All material copyright 1996-2010 J.F Kurose and K.W. Ross, All Rights Reserved Raúl Durán, Nacho Pérez v1.4 Capa de Transporte 3-2 Capítulo 3: La capa de transporte Objetivos: comprender los principios que están tras los servicios de la capa de transporte multiplexar/des- multiplexar transferencia de datos fiable control de flujo control de congestión conocer los protocolos de transporte de Internet: UDP: transporte sin conexión TCP: transporte orientado a conexión control de flujo TCP control de congestión TCP Raúl Durán, Nacho Pérez v1.4 Capa de Transporte

Transcript of Arquitectura de Redes, capítulo 3atc2.aut.uah.es/~nacho/AR/C3.2DPP.pdf · 3.1 Servicios de la capa...

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 106

time (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

enci

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-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 106

time (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

enci

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-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 106

time (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

enci

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 106

time (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

enci

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

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 106

time (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

enci

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-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 106

time (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

enci

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 106

time (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

enci

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-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 106

time (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

enci

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

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 106

time (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

enci

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 106

time (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

enci

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-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 106

time (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

enci

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-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 106

time (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

enci

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 106

time (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

enci

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

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 106

time (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

enci

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-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 106

time (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

enci

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 106

time (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

enci

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-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 106

time (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

enci

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-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 106

time (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

enci

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 106

time (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

enci

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-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 106

time (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

enci

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-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 106

time (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

enci

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 106

time (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

enci

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-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 106

time (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

enci

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-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 106

time (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

enci

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 106

time (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

enci

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-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 106

time (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

enci

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-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 106

time (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

enci

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 106

time (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

enci

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-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 106

time (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

enci

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-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 106

time (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

enci

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 106

time (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

enci

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-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 106

time (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

enci

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-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 106

time (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

enci

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 106

time (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

enci

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-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 106

time (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

enci

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-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 106

time (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

enci

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 106

time (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

enci

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-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 106

time (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

enci

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-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 106

time (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

enci

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 106

time (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

enci

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-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 106

time (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

enci

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-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 106

time (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

enci

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 106

time (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

enci

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 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

enci

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-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

enci

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

enci

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-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

enci

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-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

enci

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

enci

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-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

enci

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-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

enci

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

enci

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-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