102
Transport Layer 3-1 Capítulo 3 Camada de Transporte Computer Networking: A Top Down Approach, 5 th edition. Jim Kurose, Keith Ross Addison-Wesley, July 2009. 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-2009 J.F Kurose and K.W. Ross, All Rights Reserved

Capítulo 3 Camada de Transporte - dca.fee.unicamp.brmarco/cursos/ea074_12_1/slides/2012...Transport Layer 3-3 Capítulo 3: Visão Geral 3.1 Serviços da Camada de Transporte 3.2 Multiplexação

Embed Size (px)

Citation preview

Transport Layer 3-1

Capiacutetulo 3Camada de Transporte

Computer Networking A Top Down Approach 5th edition Jim Kurose Keith RossAddison-Wesley July 2009

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-2009JF Kurose and KW Ross All Rights Reserved

Transport Layer 3-2

Capiacutetulo 3 Camada de Transporte

Objetivos

Entender os princiacutepiosrelacionados aosserviccedilos da camada de transporte

multiplexaccedilatildeodemulti-plexaccedilatildeo

Transferecircncia confiaacutevelde dados

Controle de fluxo

Controle de congestionamento

Aprender sobre osprotocolos da camada de transporte na Internet

UDP transporte semconexatildeo

TCP transporte orientado agraveconexatildeo

Controle de congestionamento no TCP

Transport Layer 3-3

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camada de Transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte semconexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevel de dados

35 Transporte orientado agraveconexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento da conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento no TCP

Transport Layer 3-4

Protocolos e Serviccedilos de Transporte

Provecirc comunicaccedilatildeo loacutegicaentre processos de aplicaccedilatildeoexecutando em hosts diferentes

Os protocolos de transporteexecutam nos sistemas finais

lado do emissor quebra as mensagens da aplic emsegmentos e passa-os paraa camada de rede

lado do receptor remontaos segmentos namensagem e passa-a paraa camada de aplic

applicationtransportnetworkdata linkphysical

applicationtransportnetworkdata linkphysical

Transporteloacutegico

fim-a-fim

Transport Layer 3-5

Camada de Transporte x Camada de Rede

Camada de rede comunicaccedilatildeo loacutegica entre hosts

Camada de transportecomunicaccedilatildeo loacutegica entre processos depende de (e melhora os) serviccedilos

da camada de rede

Transport Layer 3-6

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camada de Transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte semconexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevel de dados

35 Transporte orientado agraveconexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento da conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento no TCP

Transport Layer 3-7

Multiplexaccedilatildeodemultiplexaccedilatildeo

aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

P1 aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

P2P3 P4P1

host 1 host 2 host 3

= processo= socket

Entrega os segmentos recebidosno socket correto

Demultiplexaccedilatildeo no host receptor

Coleta os dados dos muacuteltiplossockets e encapsula-os como cabeccedilalho (posteriormenteutilizado na demultiplexaccedilatildeo)

Multiplexaccedilatildeo no host emissor

Transport Layer 3-8

Como trabalha a demultiplexaccedilatildeo host recebe datagramas IP

cada datagrama possui o endereccedilo IP da origem e o endereccedilo IP do destino

cada datagrama carrega 1 segmento da camada de transporte

cada segmento possui osnuacutemeros das portas de origem e de destino

o host utiliza os endereccedilos IP e os nuacutemeros das portas paraencaminhar o segmento aosocket apropriado

da porta de origem

da porta dedestino

32 bits

dado da aplicaccedilatildeo(mensagem)

outros campos docabeccedilalho

Formato do segmento TCPUDP

Transport Layer 3-9

Demultiplexaccedilatildeo sem conexatildeo

Cria sockets com nuacutemerosde porta

DatagramSocket mySocket1 = new DatagramSocket(12534)

DatagramSocket mySocket2 = new DatagramSocket(12535)

O socket UDP eacute identificadopor uma tupla de doiselementos

(endereccedilo IP destino nuacutemero porta de destino)

quando o host recebe um segmento UDP

checa o nuacutemero da porta de destino no segmento

direciona o segmento UDP para o socket que conteacutemaquele numero

datagramas IP com endereccedilosIP origem diferentes eounuacutemeros de porta de origem diferentes satildeo encaminhados ao mesmo socket

Transport Layer 3-10

Demux sem conexatildeo (cont)

DatagramSocket serverSocket = new DatagramSocket(6428)

ClienteIPB

P2

clienteIP A

P1P1P3

servidorIP C

SP 6428

DP 9157

SP 9157

DP 6428

SP 6428

DP 5775

SP 5775

DP 6428

SP provecirc ldquoendereccedilo de retornordquo

Transport Layer 3-11

Demux orientado agrave conexatildeo

O socket TCP eacuteidentificado por umatupla de 4 elementos

Endereccedilo IP de origem Nuacutemero da porta de

origem Endereccedilo IP de destino Nuacutemero da porta de

destino

host receptor utiliza osquatro valores paraencaminhar o segmentoao socket apropriado

O servidor pode suportarvaacuterios sockets TCP simultaneamente

cada socket eacute identificadopela sua tupla-4

Servidores Web possuemdiferentes sockets paracada conexatildeo com o cliente

HTTP natildeo-persistenteteraacute um socket diferentepara cada requisiccedilatildeo

Transport Layer 3-12

Demux orientado agrave conexatildeo(cont)

ClienteIPB

P1

clienteIP A

P1P2P4

servidorIP C

SP 9157

DP 80

SP 9157

DP 80

P5 P6 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Transport Layer 3-13

Connection-oriented demux Servidor Web com Threads

ClienteIPB

P1

clienteIP A

P1P2

servidorIP C

SP 9157

DP 80

SP 9157

DP 80

P4 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Transport Layer 3-14

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camada de Transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte semconexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevel de dados

35 Transporte orientado agraveconexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento da conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento no TCP

Transport Layer 3-15

UDP User Datagram Protocol [RFC 768]

Protocolo de transporteInternet ldquosem gordurasrdquo

Serviccedilo ldquomelhor esforccedilordquo os segmentos UDP podem

Ser perdidos

Ser entregues fora de ordem agrave aplicaccedilatildeo

Sem conexatildeo sem handshaking entre

o emissor UDP e o receptor UDP

cada segmento UDP eacutemanipuladoindependentemente dos outros

Porque existe o UDP Sem estabelecimento de

conexatildeo (a conexatildeo incluiatraso)

simples natildeo manteacutem o estado da conexatildeo no emissor e no receptor

Cabeccedilalho pequeno no segmento

Sem controle de congestionamento UDP pode enviar segmentos tatildeoraacutepido quanto desejado (e possiacutevel)

Transport Layer 3-16

Mais sobre o UDP

Geralmente utilizado emaplicaccedilotildees envolvendostreaming multimiacutedia

Tolerante a perdas Sensiacutevel agrave taxa

Uso de UDP DNS SNMP

Transferecircncia confiaacutevelsobre o UDP adicionarconfiabilidade no niacutevel daaplicaccedilatildeo

Recuperaccedilatildeo de erroespeciacutefica da aplicaccedilatildeo

da portade origem

32 bits

Dado da aplicaccedilatildeo(mensagem)

Formato do segmento UDP

tamanho checksumTamanho emBytes do

segmento UDPincluindo ocabeccedilalho

da portade destino

Transport Layer 3-17

Checksum UDP

Emissor Trata o conteuacutedo do

segmento como umasequecircncia de inteiros de 16 bits

checksum adiccedilatildeo (soma em complemento de 1)

o emissor coloca o valor do checksum no campo de checksum do UDP

Receptor Computa o checksum do

segmento recebido

Checa se o checksum computado eacute igual ao valor encontrado no campo checksum

NO ndash erro detectado

YES ndash nenhum errodectetado (entretantopode exister erro)

Objetivo detetar ldquoerrosrdquo no segmento transmitido

Transport Layer 3-18

Exemplo Internet Checksum Nota

Na adiccedilatildeo dos valores um carryout do bit maissignificativo deve ser adicionado ao resultado

Exemplo adiccedilatildeo de dois inteiros 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

wraparound

sumchecksum

Transport Layer 3-19

bull 31 Serviccedilos da camada de transporte

bull 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

bull 33 Transporte natildeo orientado agrave conexatildeo UDP

bull 34 Princiacutepios de transferecircncia confiaacutevel de dados

bull 35 Transporte orientado agrave conexatildeo TCPbull Estrutura do segmentobull Transferecircncia confiaacutevel de dadosbull Controle de fluxobull Gerenciamento de conexatildeo

bull 36 Princiacutepios de controle de congestionamento

bull 37 Controle de congestionamento do TCP

Camada de transporte

Transport Layer 3-20

bull Importante nas camadasde aplicaccedilatildeo transportee enlace

bull Top 10 na lista dos toacutepicos mais importantsde redes

bull Caracteriacutesticas dos canaisnatildeo confiaacuteveisdeterminaratildeo a complexidade dos protocolos confiaacuteveis de transferecircncia de dados (rdt)

Princiacutepios de transferecircncia confiaacutevel de dados

Transport Layer 3-21

ladotransmissor

ladoreceptor

rdt_send() chamada da camada superior (ex pela aplicaccedilatildeo) Passa dados paraentregar agrave camada superior receptora

udt_send() chamada pela entidadede transporte para transferir pacotes

para o receptor sobre o canal natildeoconfiaacutevel

rdt_rcv() chamada quando o pacote chegaao lado receptor do canal

deliver_data() chamada pelaentidade de transporte para

entregar dados agrave camada superior

Transferecircncia confiaacutevel o ponto de partida

Transport Layer 3-22

Etapas

bull Desenvolver incrementalmente o transmissor e o receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)

bull Considerar apenas transferecircncias de dados unidirecionaisbull a informaccedilatildeo de controle deve fluir em ambas as direccedilotildees

bull Usar maacutequinas de estados finitos (FSM) para especificar o protocolo transmissor e o receptor

estado1

estado2

evento causando transiccedilatildeo de estadosaccedilotildees tomadas na transiccedilatildeo de estado

estado quando neste ldquoestadordquoo proacuteximo estado fica

unicamente determinadopelo proacuteximo evento

eventoaccedilotildees

Transferecircncia confiaacutevel o ponto de partida

Transport Layer 3-23

bull Canal de transmissatildeoperfeitamente confiaacutevel

bull Natildeo haacute erros de bitsbull Natildeo haacute perdas de pacotes

bull FSMs separadas paratransmissor e receptor

bull Transmissor envia dados parao canal subjacente

bull Receptor lecirc os dados do canal subjacente

rdt10 Transfecircrencia confiaacutevel sobre canaisconfiaacuteveis

Transport Layer 3-24

rdt20 canal com erros de bit

bull Canal subjacente pode ldquocorromperrdquo valores dos bits num pacotebull Checksum para detectar erros de bits

bull A questatildeo como recuperar esses errosbull Reconhecimentos (ACKs) receptor avisa explicitamente aotransmissor que o pacote foi recebido corretamente

bull Reconhecimentos negativos (NAKs) receptor avisaexplicitamente ao transmissor que o pacote tem erros

bull Transmissor reenvia o pacote quando da recepccedilatildeo de um NAK

bull Novos mecanismos no rdt20 (aleacutem do rdt10)bull Detecccedilatildeo de errosbull Retorno do receptor mensagens de controle(ACK NAK) rcvr-gtsender

Transport Layer 3-25

rdt20 especificaccedilatildeo FSM

Transport Layer 3-26

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 operaccedilatildeo com ausecircncia de erros

Transport Layer 3-27

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 cenaacuterio de erro

Transport Layer 3-28

O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata

Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada

pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes

duplicados

Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do

receptor

rdt20 tem um problema fatal

Transport Layer 3-29

rdt21 transmissor trata ACKNAKsperdidos

rdt21 receptor trata ACKNAKsperdidos

Wait for 0 from below

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)

Wait for 1 from below

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)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

Transport Layer 3-31

Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados

bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1

Receptorbull Deve verificar se o pacote recebido eacute duplicado

bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor

rdt21 discussatildeo

Transport Layer 3-32

bull Mesma funcionalidade do rdt21 usando somente ACKs

bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido

bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente

rdt22 um protocolo sem NAK

Transport Layer 3-33

aguardachamada 0

de cima

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)

aguardaACK

0

fragmento FSMdo transmissor

aguarda

0 de baixo

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento FSMdo receptor

Λ

rdt22 fragmentos do transmissor e do receptor

Transport Layer 3-34

Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante

Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)

bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso

bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido

bull Exige um temporizador decrescente

rdt30 canais com erros e perdas

Transport Layer 3-35

Transmissor rdt30

Transport Layer 3-36

rdt30 em accedilatildeo

Transport Layer 3-37

rdt30 em accedilatildeo

Transport Layer 3-38

bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado

bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps

bull O protocolo de rede limita o uso dos recursos fiacutesicos

bull rdt30 funciona mas o desempenho eacute sofriacutevel

bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB

Desempenho do rdt30

Ttransmis

satildeo

= 8 kbpkt109 bs

= 8 microsegL (tamanho do pacote em bits)

R (taxa de transmissatildeo bps)=

Usender=008

30008 = 000027 L RRTT + L R

=

Transport Layer 3-39

rdt30 operaccedilatildeo pare e espere

Transmissatildeo do 1ordm Bit dopacote t = 0

emissor receptor

RTT

Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK

Recebe ACK envia proacuteximopacote t = RTT + L R

U sender

= 008

30008 = 000027

microsec

L R

RTT + L R =

Transport Layer 3-40

Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos

bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada

bull Armazenamento no transmissor eou no receptor

bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

Protocolos com paralelismo (pipelining)

Transport Layer 3-41

Pipelining aumento da utilizaccedilatildeo

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Chegada do primeiro bitChegada do uacuteltimo bit envia ACK

Chegada do ACK envia o proacuteximo pacote t = RTT + L R

U emissor

= 024

30008 = 00008

microsecon

3 L R

RTT + L R =

Aumenta a utilizaccedilatildeopor um fator de 3

Transport Layer 3-42

Protocolos do tipo Pipelining

Go-back-N visatildeo geral Emissor pode enviar ateacute N

pacotes natildeo reconhecidos(unacked) no pipeline

Receptor envia acksacumulativos

Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo

Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido

Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)

Retransmissatildeo seletiva visatildeogeral

Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)

Receptor reconhece (acks) pacotes individuais

Emissor manteacutemtemporizador para cadapacote natildeo reconhecido

Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido

Transport Layer 3-43

Transmissor

bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote

bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos

bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)

bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela

Go-Back-N

Transport Layer 3-44

GBN FSM estendida para o transmissor

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)

Λ

Λ

Transport Layer 3-45

bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum

bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem

GBN FSM estendida para o receptor

Wait

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(0ACKchksum)

Λ

udt_send(sndpkt)

default

Transport Layer 3-46

GBN em accedilatildeo

Transport Layer 3-47

bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior

bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido

bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos

Retransmissatildeo seletiva

Transport Layer 3-48

Retransmissatildeo seletiva janelas do transmissore do receptor

Transport Layer 3-49

TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de

sequumlecircncia disponiacutevel estaacute najanela envia o pacote

Timeout(n)bull Reenvia pacote n restart

timerACK (n) em

[sendbasesendbase+N]bull Marca pacote n como

recebidobull Se n eacute o menor pacote natildeo

reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido

Retransmissatildeo seletiva

RECEPTORPacote n em [rcvbase rcvbase +

N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem

entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido

pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora

Transport Layer 3-50

Retransmissatildeo seletiva em accedilatildeo

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-2

Capiacutetulo 3 Camada de Transporte

Objetivos

Entender os princiacutepiosrelacionados aosserviccedilos da camada de transporte

multiplexaccedilatildeodemulti-plexaccedilatildeo

Transferecircncia confiaacutevelde dados

Controle de fluxo

Controle de congestionamento

Aprender sobre osprotocolos da camada de transporte na Internet

UDP transporte semconexatildeo

TCP transporte orientado agraveconexatildeo

Controle de congestionamento no TCP

Transport Layer 3-3

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camada de Transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte semconexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevel de dados

35 Transporte orientado agraveconexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento da conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento no TCP

Transport Layer 3-4

Protocolos e Serviccedilos de Transporte

Provecirc comunicaccedilatildeo loacutegicaentre processos de aplicaccedilatildeoexecutando em hosts diferentes

Os protocolos de transporteexecutam nos sistemas finais

lado do emissor quebra as mensagens da aplic emsegmentos e passa-os paraa camada de rede

lado do receptor remontaos segmentos namensagem e passa-a paraa camada de aplic

applicationtransportnetworkdata linkphysical

applicationtransportnetworkdata linkphysical

Transporteloacutegico

fim-a-fim

Transport Layer 3-5

Camada de Transporte x Camada de Rede

Camada de rede comunicaccedilatildeo loacutegica entre hosts

Camada de transportecomunicaccedilatildeo loacutegica entre processos depende de (e melhora os) serviccedilos

da camada de rede

Transport Layer 3-6

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camada de Transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte semconexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevel de dados

35 Transporte orientado agraveconexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento da conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento no TCP

Transport Layer 3-7

Multiplexaccedilatildeodemultiplexaccedilatildeo

aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

P1 aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

P2P3 P4P1

host 1 host 2 host 3

= processo= socket

Entrega os segmentos recebidosno socket correto

Demultiplexaccedilatildeo no host receptor

Coleta os dados dos muacuteltiplossockets e encapsula-os como cabeccedilalho (posteriormenteutilizado na demultiplexaccedilatildeo)

Multiplexaccedilatildeo no host emissor

Transport Layer 3-8

Como trabalha a demultiplexaccedilatildeo host recebe datagramas IP

cada datagrama possui o endereccedilo IP da origem e o endereccedilo IP do destino

cada datagrama carrega 1 segmento da camada de transporte

cada segmento possui osnuacutemeros das portas de origem e de destino

o host utiliza os endereccedilos IP e os nuacutemeros das portas paraencaminhar o segmento aosocket apropriado

da porta de origem

da porta dedestino

32 bits

dado da aplicaccedilatildeo(mensagem)

outros campos docabeccedilalho

Formato do segmento TCPUDP

Transport Layer 3-9

Demultiplexaccedilatildeo sem conexatildeo

Cria sockets com nuacutemerosde porta

DatagramSocket mySocket1 = new DatagramSocket(12534)

DatagramSocket mySocket2 = new DatagramSocket(12535)

O socket UDP eacute identificadopor uma tupla de doiselementos

(endereccedilo IP destino nuacutemero porta de destino)

quando o host recebe um segmento UDP

checa o nuacutemero da porta de destino no segmento

direciona o segmento UDP para o socket que conteacutemaquele numero

datagramas IP com endereccedilosIP origem diferentes eounuacutemeros de porta de origem diferentes satildeo encaminhados ao mesmo socket

Transport Layer 3-10

Demux sem conexatildeo (cont)

DatagramSocket serverSocket = new DatagramSocket(6428)

ClienteIPB

P2

clienteIP A

P1P1P3

servidorIP C

SP 6428

DP 9157

SP 9157

DP 6428

SP 6428

DP 5775

SP 5775

DP 6428

SP provecirc ldquoendereccedilo de retornordquo

Transport Layer 3-11

Demux orientado agrave conexatildeo

O socket TCP eacuteidentificado por umatupla de 4 elementos

Endereccedilo IP de origem Nuacutemero da porta de

origem Endereccedilo IP de destino Nuacutemero da porta de

destino

host receptor utiliza osquatro valores paraencaminhar o segmentoao socket apropriado

O servidor pode suportarvaacuterios sockets TCP simultaneamente

cada socket eacute identificadopela sua tupla-4

Servidores Web possuemdiferentes sockets paracada conexatildeo com o cliente

HTTP natildeo-persistenteteraacute um socket diferentepara cada requisiccedilatildeo

Transport Layer 3-12

Demux orientado agrave conexatildeo(cont)

ClienteIPB

P1

clienteIP A

P1P2P4

servidorIP C

SP 9157

DP 80

SP 9157

DP 80

P5 P6 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Transport Layer 3-13

Connection-oriented demux Servidor Web com Threads

ClienteIPB

P1

clienteIP A

P1P2

servidorIP C

SP 9157

DP 80

SP 9157

DP 80

P4 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Transport Layer 3-14

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camada de Transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte semconexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevel de dados

35 Transporte orientado agraveconexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento da conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento no TCP

Transport Layer 3-15

UDP User Datagram Protocol [RFC 768]

Protocolo de transporteInternet ldquosem gordurasrdquo

Serviccedilo ldquomelhor esforccedilordquo os segmentos UDP podem

Ser perdidos

Ser entregues fora de ordem agrave aplicaccedilatildeo

Sem conexatildeo sem handshaking entre

o emissor UDP e o receptor UDP

cada segmento UDP eacutemanipuladoindependentemente dos outros

Porque existe o UDP Sem estabelecimento de

conexatildeo (a conexatildeo incluiatraso)

simples natildeo manteacutem o estado da conexatildeo no emissor e no receptor

Cabeccedilalho pequeno no segmento

Sem controle de congestionamento UDP pode enviar segmentos tatildeoraacutepido quanto desejado (e possiacutevel)

Transport Layer 3-16

Mais sobre o UDP

Geralmente utilizado emaplicaccedilotildees envolvendostreaming multimiacutedia

Tolerante a perdas Sensiacutevel agrave taxa

Uso de UDP DNS SNMP

Transferecircncia confiaacutevelsobre o UDP adicionarconfiabilidade no niacutevel daaplicaccedilatildeo

Recuperaccedilatildeo de erroespeciacutefica da aplicaccedilatildeo

da portade origem

32 bits

Dado da aplicaccedilatildeo(mensagem)

Formato do segmento UDP

tamanho checksumTamanho emBytes do

segmento UDPincluindo ocabeccedilalho

da portade destino

Transport Layer 3-17

Checksum UDP

Emissor Trata o conteuacutedo do

segmento como umasequecircncia de inteiros de 16 bits

checksum adiccedilatildeo (soma em complemento de 1)

o emissor coloca o valor do checksum no campo de checksum do UDP

Receptor Computa o checksum do

segmento recebido

Checa se o checksum computado eacute igual ao valor encontrado no campo checksum

NO ndash erro detectado

YES ndash nenhum errodectetado (entretantopode exister erro)

Objetivo detetar ldquoerrosrdquo no segmento transmitido

Transport Layer 3-18

Exemplo Internet Checksum Nota

Na adiccedilatildeo dos valores um carryout do bit maissignificativo deve ser adicionado ao resultado

Exemplo adiccedilatildeo de dois inteiros 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

wraparound

sumchecksum

Transport Layer 3-19

bull 31 Serviccedilos da camada de transporte

bull 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

bull 33 Transporte natildeo orientado agrave conexatildeo UDP

bull 34 Princiacutepios de transferecircncia confiaacutevel de dados

bull 35 Transporte orientado agrave conexatildeo TCPbull Estrutura do segmentobull Transferecircncia confiaacutevel de dadosbull Controle de fluxobull Gerenciamento de conexatildeo

bull 36 Princiacutepios de controle de congestionamento

bull 37 Controle de congestionamento do TCP

Camada de transporte

Transport Layer 3-20

bull Importante nas camadasde aplicaccedilatildeo transportee enlace

bull Top 10 na lista dos toacutepicos mais importantsde redes

bull Caracteriacutesticas dos canaisnatildeo confiaacuteveisdeterminaratildeo a complexidade dos protocolos confiaacuteveis de transferecircncia de dados (rdt)

Princiacutepios de transferecircncia confiaacutevel de dados

Transport Layer 3-21

ladotransmissor

ladoreceptor

rdt_send() chamada da camada superior (ex pela aplicaccedilatildeo) Passa dados paraentregar agrave camada superior receptora

udt_send() chamada pela entidadede transporte para transferir pacotes

para o receptor sobre o canal natildeoconfiaacutevel

rdt_rcv() chamada quando o pacote chegaao lado receptor do canal

deliver_data() chamada pelaentidade de transporte para

entregar dados agrave camada superior

Transferecircncia confiaacutevel o ponto de partida

Transport Layer 3-22

Etapas

bull Desenvolver incrementalmente o transmissor e o receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)

bull Considerar apenas transferecircncias de dados unidirecionaisbull a informaccedilatildeo de controle deve fluir em ambas as direccedilotildees

bull Usar maacutequinas de estados finitos (FSM) para especificar o protocolo transmissor e o receptor

estado1

estado2

evento causando transiccedilatildeo de estadosaccedilotildees tomadas na transiccedilatildeo de estado

estado quando neste ldquoestadordquoo proacuteximo estado fica

unicamente determinadopelo proacuteximo evento

eventoaccedilotildees

Transferecircncia confiaacutevel o ponto de partida

Transport Layer 3-23

bull Canal de transmissatildeoperfeitamente confiaacutevel

bull Natildeo haacute erros de bitsbull Natildeo haacute perdas de pacotes

bull FSMs separadas paratransmissor e receptor

bull Transmissor envia dados parao canal subjacente

bull Receptor lecirc os dados do canal subjacente

rdt10 Transfecircrencia confiaacutevel sobre canaisconfiaacuteveis

Transport Layer 3-24

rdt20 canal com erros de bit

bull Canal subjacente pode ldquocorromperrdquo valores dos bits num pacotebull Checksum para detectar erros de bits

bull A questatildeo como recuperar esses errosbull Reconhecimentos (ACKs) receptor avisa explicitamente aotransmissor que o pacote foi recebido corretamente

bull Reconhecimentos negativos (NAKs) receptor avisaexplicitamente ao transmissor que o pacote tem erros

bull Transmissor reenvia o pacote quando da recepccedilatildeo de um NAK

bull Novos mecanismos no rdt20 (aleacutem do rdt10)bull Detecccedilatildeo de errosbull Retorno do receptor mensagens de controle(ACK NAK) rcvr-gtsender

Transport Layer 3-25

rdt20 especificaccedilatildeo FSM

Transport Layer 3-26

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 operaccedilatildeo com ausecircncia de erros

Transport Layer 3-27

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 cenaacuterio de erro

Transport Layer 3-28

O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata

Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada

pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes

duplicados

Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do

receptor

rdt20 tem um problema fatal

Transport Layer 3-29

rdt21 transmissor trata ACKNAKsperdidos

rdt21 receptor trata ACKNAKsperdidos

Wait for 0 from below

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)

Wait for 1 from below

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)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

Transport Layer 3-31

Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados

bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1

Receptorbull Deve verificar se o pacote recebido eacute duplicado

bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor

rdt21 discussatildeo

Transport Layer 3-32

bull Mesma funcionalidade do rdt21 usando somente ACKs

bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido

bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente

rdt22 um protocolo sem NAK

Transport Layer 3-33

aguardachamada 0

de cima

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)

aguardaACK

0

fragmento FSMdo transmissor

aguarda

0 de baixo

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento FSMdo receptor

Λ

rdt22 fragmentos do transmissor e do receptor

Transport Layer 3-34

Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante

Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)

bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso

bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido

bull Exige um temporizador decrescente

rdt30 canais com erros e perdas

Transport Layer 3-35

Transmissor rdt30

Transport Layer 3-36

rdt30 em accedilatildeo

Transport Layer 3-37

rdt30 em accedilatildeo

Transport Layer 3-38

bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado

bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps

bull O protocolo de rede limita o uso dos recursos fiacutesicos

bull rdt30 funciona mas o desempenho eacute sofriacutevel

bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB

Desempenho do rdt30

Ttransmis

satildeo

= 8 kbpkt109 bs

= 8 microsegL (tamanho do pacote em bits)

R (taxa de transmissatildeo bps)=

Usender=008

30008 = 000027 L RRTT + L R

=

Transport Layer 3-39

rdt30 operaccedilatildeo pare e espere

Transmissatildeo do 1ordm Bit dopacote t = 0

emissor receptor

RTT

Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK

Recebe ACK envia proacuteximopacote t = RTT + L R

U sender

= 008

30008 = 000027

microsec

L R

RTT + L R =

Transport Layer 3-40

Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos

bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada

bull Armazenamento no transmissor eou no receptor

bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

Protocolos com paralelismo (pipelining)

Transport Layer 3-41

Pipelining aumento da utilizaccedilatildeo

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Chegada do primeiro bitChegada do uacuteltimo bit envia ACK

Chegada do ACK envia o proacuteximo pacote t = RTT + L R

U emissor

= 024

30008 = 00008

microsecon

3 L R

RTT + L R =

Aumenta a utilizaccedilatildeopor um fator de 3

Transport Layer 3-42

Protocolos do tipo Pipelining

Go-back-N visatildeo geral Emissor pode enviar ateacute N

pacotes natildeo reconhecidos(unacked) no pipeline

Receptor envia acksacumulativos

Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo

Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido

Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)

Retransmissatildeo seletiva visatildeogeral

Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)

Receptor reconhece (acks) pacotes individuais

Emissor manteacutemtemporizador para cadapacote natildeo reconhecido

Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido

Transport Layer 3-43

Transmissor

bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote

bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos

bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)

bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela

Go-Back-N

Transport Layer 3-44

GBN FSM estendida para o transmissor

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)

Λ

Λ

Transport Layer 3-45

bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum

bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem

GBN FSM estendida para o receptor

Wait

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(0ACKchksum)

Λ

udt_send(sndpkt)

default

Transport Layer 3-46

GBN em accedilatildeo

Transport Layer 3-47

bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior

bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido

bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos

Retransmissatildeo seletiva

Transport Layer 3-48

Retransmissatildeo seletiva janelas do transmissore do receptor

Transport Layer 3-49

TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de

sequumlecircncia disponiacutevel estaacute najanela envia o pacote

Timeout(n)bull Reenvia pacote n restart

timerACK (n) em

[sendbasesendbase+N]bull Marca pacote n como

recebidobull Se n eacute o menor pacote natildeo

reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido

Retransmissatildeo seletiva

RECEPTORPacote n em [rcvbase rcvbase +

N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem

entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido

pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora

Transport Layer 3-50

Retransmissatildeo seletiva em accedilatildeo

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-3

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camada de Transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte semconexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevel de dados

35 Transporte orientado agraveconexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento da conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento no TCP

Transport Layer 3-4

Protocolos e Serviccedilos de Transporte

Provecirc comunicaccedilatildeo loacutegicaentre processos de aplicaccedilatildeoexecutando em hosts diferentes

Os protocolos de transporteexecutam nos sistemas finais

lado do emissor quebra as mensagens da aplic emsegmentos e passa-os paraa camada de rede

lado do receptor remontaos segmentos namensagem e passa-a paraa camada de aplic

applicationtransportnetworkdata linkphysical

applicationtransportnetworkdata linkphysical

Transporteloacutegico

fim-a-fim

Transport Layer 3-5

Camada de Transporte x Camada de Rede

Camada de rede comunicaccedilatildeo loacutegica entre hosts

Camada de transportecomunicaccedilatildeo loacutegica entre processos depende de (e melhora os) serviccedilos

da camada de rede

Transport Layer 3-6

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camada de Transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte semconexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevel de dados

35 Transporte orientado agraveconexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento da conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento no TCP

Transport Layer 3-7

Multiplexaccedilatildeodemultiplexaccedilatildeo

aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

P1 aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

P2P3 P4P1

host 1 host 2 host 3

= processo= socket

Entrega os segmentos recebidosno socket correto

Demultiplexaccedilatildeo no host receptor

Coleta os dados dos muacuteltiplossockets e encapsula-os como cabeccedilalho (posteriormenteutilizado na demultiplexaccedilatildeo)

Multiplexaccedilatildeo no host emissor

Transport Layer 3-8

Como trabalha a demultiplexaccedilatildeo host recebe datagramas IP

cada datagrama possui o endereccedilo IP da origem e o endereccedilo IP do destino

cada datagrama carrega 1 segmento da camada de transporte

cada segmento possui osnuacutemeros das portas de origem e de destino

o host utiliza os endereccedilos IP e os nuacutemeros das portas paraencaminhar o segmento aosocket apropriado

da porta de origem

da porta dedestino

32 bits

dado da aplicaccedilatildeo(mensagem)

outros campos docabeccedilalho

Formato do segmento TCPUDP

Transport Layer 3-9

Demultiplexaccedilatildeo sem conexatildeo

Cria sockets com nuacutemerosde porta

DatagramSocket mySocket1 = new DatagramSocket(12534)

DatagramSocket mySocket2 = new DatagramSocket(12535)

O socket UDP eacute identificadopor uma tupla de doiselementos

(endereccedilo IP destino nuacutemero porta de destino)

quando o host recebe um segmento UDP

checa o nuacutemero da porta de destino no segmento

direciona o segmento UDP para o socket que conteacutemaquele numero

datagramas IP com endereccedilosIP origem diferentes eounuacutemeros de porta de origem diferentes satildeo encaminhados ao mesmo socket

Transport Layer 3-10

Demux sem conexatildeo (cont)

DatagramSocket serverSocket = new DatagramSocket(6428)

ClienteIPB

P2

clienteIP A

P1P1P3

servidorIP C

SP 6428

DP 9157

SP 9157

DP 6428

SP 6428

DP 5775

SP 5775

DP 6428

SP provecirc ldquoendereccedilo de retornordquo

Transport Layer 3-11

Demux orientado agrave conexatildeo

O socket TCP eacuteidentificado por umatupla de 4 elementos

Endereccedilo IP de origem Nuacutemero da porta de

origem Endereccedilo IP de destino Nuacutemero da porta de

destino

host receptor utiliza osquatro valores paraencaminhar o segmentoao socket apropriado

O servidor pode suportarvaacuterios sockets TCP simultaneamente

cada socket eacute identificadopela sua tupla-4

Servidores Web possuemdiferentes sockets paracada conexatildeo com o cliente

HTTP natildeo-persistenteteraacute um socket diferentepara cada requisiccedilatildeo

Transport Layer 3-12

Demux orientado agrave conexatildeo(cont)

ClienteIPB

P1

clienteIP A

P1P2P4

servidorIP C

SP 9157

DP 80

SP 9157

DP 80

P5 P6 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Transport Layer 3-13

Connection-oriented demux Servidor Web com Threads

ClienteIPB

P1

clienteIP A

P1P2

servidorIP C

SP 9157

DP 80

SP 9157

DP 80

P4 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Transport Layer 3-14

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camada de Transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte semconexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevel de dados

35 Transporte orientado agraveconexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento da conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento no TCP

Transport Layer 3-15

UDP User Datagram Protocol [RFC 768]

Protocolo de transporteInternet ldquosem gordurasrdquo

Serviccedilo ldquomelhor esforccedilordquo os segmentos UDP podem

Ser perdidos

Ser entregues fora de ordem agrave aplicaccedilatildeo

Sem conexatildeo sem handshaking entre

o emissor UDP e o receptor UDP

cada segmento UDP eacutemanipuladoindependentemente dos outros

Porque existe o UDP Sem estabelecimento de

conexatildeo (a conexatildeo incluiatraso)

simples natildeo manteacutem o estado da conexatildeo no emissor e no receptor

Cabeccedilalho pequeno no segmento

Sem controle de congestionamento UDP pode enviar segmentos tatildeoraacutepido quanto desejado (e possiacutevel)

Transport Layer 3-16

Mais sobre o UDP

Geralmente utilizado emaplicaccedilotildees envolvendostreaming multimiacutedia

Tolerante a perdas Sensiacutevel agrave taxa

Uso de UDP DNS SNMP

Transferecircncia confiaacutevelsobre o UDP adicionarconfiabilidade no niacutevel daaplicaccedilatildeo

Recuperaccedilatildeo de erroespeciacutefica da aplicaccedilatildeo

da portade origem

32 bits

Dado da aplicaccedilatildeo(mensagem)

Formato do segmento UDP

tamanho checksumTamanho emBytes do

segmento UDPincluindo ocabeccedilalho

da portade destino

Transport Layer 3-17

Checksum UDP

Emissor Trata o conteuacutedo do

segmento como umasequecircncia de inteiros de 16 bits

checksum adiccedilatildeo (soma em complemento de 1)

o emissor coloca o valor do checksum no campo de checksum do UDP

Receptor Computa o checksum do

segmento recebido

Checa se o checksum computado eacute igual ao valor encontrado no campo checksum

NO ndash erro detectado

YES ndash nenhum errodectetado (entretantopode exister erro)

Objetivo detetar ldquoerrosrdquo no segmento transmitido

Transport Layer 3-18

Exemplo Internet Checksum Nota

Na adiccedilatildeo dos valores um carryout do bit maissignificativo deve ser adicionado ao resultado

Exemplo adiccedilatildeo de dois inteiros 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

wraparound

sumchecksum

Transport Layer 3-19

bull 31 Serviccedilos da camada de transporte

bull 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

bull 33 Transporte natildeo orientado agrave conexatildeo UDP

bull 34 Princiacutepios de transferecircncia confiaacutevel de dados

bull 35 Transporte orientado agrave conexatildeo TCPbull Estrutura do segmentobull Transferecircncia confiaacutevel de dadosbull Controle de fluxobull Gerenciamento de conexatildeo

bull 36 Princiacutepios de controle de congestionamento

bull 37 Controle de congestionamento do TCP

Camada de transporte

Transport Layer 3-20

bull Importante nas camadasde aplicaccedilatildeo transportee enlace

bull Top 10 na lista dos toacutepicos mais importantsde redes

bull Caracteriacutesticas dos canaisnatildeo confiaacuteveisdeterminaratildeo a complexidade dos protocolos confiaacuteveis de transferecircncia de dados (rdt)

Princiacutepios de transferecircncia confiaacutevel de dados

Transport Layer 3-21

ladotransmissor

ladoreceptor

rdt_send() chamada da camada superior (ex pela aplicaccedilatildeo) Passa dados paraentregar agrave camada superior receptora

udt_send() chamada pela entidadede transporte para transferir pacotes

para o receptor sobre o canal natildeoconfiaacutevel

rdt_rcv() chamada quando o pacote chegaao lado receptor do canal

deliver_data() chamada pelaentidade de transporte para

entregar dados agrave camada superior

Transferecircncia confiaacutevel o ponto de partida

Transport Layer 3-22

Etapas

bull Desenvolver incrementalmente o transmissor e o receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)

bull Considerar apenas transferecircncias de dados unidirecionaisbull a informaccedilatildeo de controle deve fluir em ambas as direccedilotildees

bull Usar maacutequinas de estados finitos (FSM) para especificar o protocolo transmissor e o receptor

estado1

estado2

evento causando transiccedilatildeo de estadosaccedilotildees tomadas na transiccedilatildeo de estado

estado quando neste ldquoestadordquoo proacuteximo estado fica

unicamente determinadopelo proacuteximo evento

eventoaccedilotildees

Transferecircncia confiaacutevel o ponto de partida

Transport Layer 3-23

bull Canal de transmissatildeoperfeitamente confiaacutevel

bull Natildeo haacute erros de bitsbull Natildeo haacute perdas de pacotes

bull FSMs separadas paratransmissor e receptor

bull Transmissor envia dados parao canal subjacente

bull Receptor lecirc os dados do canal subjacente

rdt10 Transfecircrencia confiaacutevel sobre canaisconfiaacuteveis

Transport Layer 3-24

rdt20 canal com erros de bit

bull Canal subjacente pode ldquocorromperrdquo valores dos bits num pacotebull Checksum para detectar erros de bits

bull A questatildeo como recuperar esses errosbull Reconhecimentos (ACKs) receptor avisa explicitamente aotransmissor que o pacote foi recebido corretamente

bull Reconhecimentos negativos (NAKs) receptor avisaexplicitamente ao transmissor que o pacote tem erros

bull Transmissor reenvia o pacote quando da recepccedilatildeo de um NAK

bull Novos mecanismos no rdt20 (aleacutem do rdt10)bull Detecccedilatildeo de errosbull Retorno do receptor mensagens de controle(ACK NAK) rcvr-gtsender

Transport Layer 3-25

rdt20 especificaccedilatildeo FSM

Transport Layer 3-26

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 operaccedilatildeo com ausecircncia de erros

Transport Layer 3-27

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 cenaacuterio de erro

Transport Layer 3-28

O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata

Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada

pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes

duplicados

Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do

receptor

rdt20 tem um problema fatal

Transport Layer 3-29

rdt21 transmissor trata ACKNAKsperdidos

rdt21 receptor trata ACKNAKsperdidos

Wait for 0 from below

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)

Wait for 1 from below

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)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

Transport Layer 3-31

Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados

bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1

Receptorbull Deve verificar se o pacote recebido eacute duplicado

bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor

rdt21 discussatildeo

Transport Layer 3-32

bull Mesma funcionalidade do rdt21 usando somente ACKs

bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido

bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente

rdt22 um protocolo sem NAK

Transport Layer 3-33

aguardachamada 0

de cima

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)

aguardaACK

0

fragmento FSMdo transmissor

aguarda

0 de baixo

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento FSMdo receptor

Λ

rdt22 fragmentos do transmissor e do receptor

Transport Layer 3-34

Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante

Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)

bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso

bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido

bull Exige um temporizador decrescente

rdt30 canais com erros e perdas

Transport Layer 3-35

Transmissor rdt30

Transport Layer 3-36

rdt30 em accedilatildeo

Transport Layer 3-37

rdt30 em accedilatildeo

Transport Layer 3-38

bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado

bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps

bull O protocolo de rede limita o uso dos recursos fiacutesicos

bull rdt30 funciona mas o desempenho eacute sofriacutevel

bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB

Desempenho do rdt30

Ttransmis

satildeo

= 8 kbpkt109 bs

= 8 microsegL (tamanho do pacote em bits)

R (taxa de transmissatildeo bps)=

Usender=008

30008 = 000027 L RRTT + L R

=

Transport Layer 3-39

rdt30 operaccedilatildeo pare e espere

Transmissatildeo do 1ordm Bit dopacote t = 0

emissor receptor

RTT

Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK

Recebe ACK envia proacuteximopacote t = RTT + L R

U sender

= 008

30008 = 000027

microsec

L R

RTT + L R =

Transport Layer 3-40

Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos

bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada

bull Armazenamento no transmissor eou no receptor

bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

Protocolos com paralelismo (pipelining)

Transport Layer 3-41

Pipelining aumento da utilizaccedilatildeo

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Chegada do primeiro bitChegada do uacuteltimo bit envia ACK

Chegada do ACK envia o proacuteximo pacote t = RTT + L R

U emissor

= 024

30008 = 00008

microsecon

3 L R

RTT + L R =

Aumenta a utilizaccedilatildeopor um fator de 3

Transport Layer 3-42

Protocolos do tipo Pipelining

Go-back-N visatildeo geral Emissor pode enviar ateacute N

pacotes natildeo reconhecidos(unacked) no pipeline

Receptor envia acksacumulativos

Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo

Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido

Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)

Retransmissatildeo seletiva visatildeogeral

Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)

Receptor reconhece (acks) pacotes individuais

Emissor manteacutemtemporizador para cadapacote natildeo reconhecido

Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido

Transport Layer 3-43

Transmissor

bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote

bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos

bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)

bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela

Go-Back-N

Transport Layer 3-44

GBN FSM estendida para o transmissor

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)

Λ

Λ

Transport Layer 3-45

bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum

bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem

GBN FSM estendida para o receptor

Wait

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(0ACKchksum)

Λ

udt_send(sndpkt)

default

Transport Layer 3-46

GBN em accedilatildeo

Transport Layer 3-47

bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior

bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido

bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos

Retransmissatildeo seletiva

Transport Layer 3-48

Retransmissatildeo seletiva janelas do transmissore do receptor

Transport Layer 3-49

TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de

sequumlecircncia disponiacutevel estaacute najanela envia o pacote

Timeout(n)bull Reenvia pacote n restart

timerACK (n) em

[sendbasesendbase+N]bull Marca pacote n como

recebidobull Se n eacute o menor pacote natildeo

reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido

Retransmissatildeo seletiva

RECEPTORPacote n em [rcvbase rcvbase +

N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem

entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido

pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora

Transport Layer 3-50

Retransmissatildeo seletiva em accedilatildeo

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-4

Protocolos e Serviccedilos de Transporte

Provecirc comunicaccedilatildeo loacutegicaentre processos de aplicaccedilatildeoexecutando em hosts diferentes

Os protocolos de transporteexecutam nos sistemas finais

lado do emissor quebra as mensagens da aplic emsegmentos e passa-os paraa camada de rede

lado do receptor remontaos segmentos namensagem e passa-a paraa camada de aplic

applicationtransportnetworkdata linkphysical

applicationtransportnetworkdata linkphysical

Transporteloacutegico

fim-a-fim

Transport Layer 3-5

Camada de Transporte x Camada de Rede

Camada de rede comunicaccedilatildeo loacutegica entre hosts

Camada de transportecomunicaccedilatildeo loacutegica entre processos depende de (e melhora os) serviccedilos

da camada de rede

Transport Layer 3-6

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camada de Transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte semconexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevel de dados

35 Transporte orientado agraveconexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento da conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento no TCP

Transport Layer 3-7

Multiplexaccedilatildeodemultiplexaccedilatildeo

aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

P1 aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

P2P3 P4P1

host 1 host 2 host 3

= processo= socket

Entrega os segmentos recebidosno socket correto

Demultiplexaccedilatildeo no host receptor

Coleta os dados dos muacuteltiplossockets e encapsula-os como cabeccedilalho (posteriormenteutilizado na demultiplexaccedilatildeo)

Multiplexaccedilatildeo no host emissor

Transport Layer 3-8

Como trabalha a demultiplexaccedilatildeo host recebe datagramas IP

cada datagrama possui o endereccedilo IP da origem e o endereccedilo IP do destino

cada datagrama carrega 1 segmento da camada de transporte

cada segmento possui osnuacutemeros das portas de origem e de destino

o host utiliza os endereccedilos IP e os nuacutemeros das portas paraencaminhar o segmento aosocket apropriado

da porta de origem

da porta dedestino

32 bits

dado da aplicaccedilatildeo(mensagem)

outros campos docabeccedilalho

Formato do segmento TCPUDP

Transport Layer 3-9

Demultiplexaccedilatildeo sem conexatildeo

Cria sockets com nuacutemerosde porta

DatagramSocket mySocket1 = new DatagramSocket(12534)

DatagramSocket mySocket2 = new DatagramSocket(12535)

O socket UDP eacute identificadopor uma tupla de doiselementos

(endereccedilo IP destino nuacutemero porta de destino)

quando o host recebe um segmento UDP

checa o nuacutemero da porta de destino no segmento

direciona o segmento UDP para o socket que conteacutemaquele numero

datagramas IP com endereccedilosIP origem diferentes eounuacutemeros de porta de origem diferentes satildeo encaminhados ao mesmo socket

Transport Layer 3-10

Demux sem conexatildeo (cont)

DatagramSocket serverSocket = new DatagramSocket(6428)

ClienteIPB

P2

clienteIP A

P1P1P3

servidorIP C

SP 6428

DP 9157

SP 9157

DP 6428

SP 6428

DP 5775

SP 5775

DP 6428

SP provecirc ldquoendereccedilo de retornordquo

Transport Layer 3-11

Demux orientado agrave conexatildeo

O socket TCP eacuteidentificado por umatupla de 4 elementos

Endereccedilo IP de origem Nuacutemero da porta de

origem Endereccedilo IP de destino Nuacutemero da porta de

destino

host receptor utiliza osquatro valores paraencaminhar o segmentoao socket apropriado

O servidor pode suportarvaacuterios sockets TCP simultaneamente

cada socket eacute identificadopela sua tupla-4

Servidores Web possuemdiferentes sockets paracada conexatildeo com o cliente

HTTP natildeo-persistenteteraacute um socket diferentepara cada requisiccedilatildeo

Transport Layer 3-12

Demux orientado agrave conexatildeo(cont)

ClienteIPB

P1

clienteIP A

P1P2P4

servidorIP C

SP 9157

DP 80

SP 9157

DP 80

P5 P6 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Transport Layer 3-13

Connection-oriented demux Servidor Web com Threads

ClienteIPB

P1

clienteIP A

P1P2

servidorIP C

SP 9157

DP 80

SP 9157

DP 80

P4 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Transport Layer 3-14

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camada de Transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte semconexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevel de dados

35 Transporte orientado agraveconexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento da conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento no TCP

Transport Layer 3-15

UDP User Datagram Protocol [RFC 768]

Protocolo de transporteInternet ldquosem gordurasrdquo

Serviccedilo ldquomelhor esforccedilordquo os segmentos UDP podem

Ser perdidos

Ser entregues fora de ordem agrave aplicaccedilatildeo

Sem conexatildeo sem handshaking entre

o emissor UDP e o receptor UDP

cada segmento UDP eacutemanipuladoindependentemente dos outros

Porque existe o UDP Sem estabelecimento de

conexatildeo (a conexatildeo incluiatraso)

simples natildeo manteacutem o estado da conexatildeo no emissor e no receptor

Cabeccedilalho pequeno no segmento

Sem controle de congestionamento UDP pode enviar segmentos tatildeoraacutepido quanto desejado (e possiacutevel)

Transport Layer 3-16

Mais sobre o UDP

Geralmente utilizado emaplicaccedilotildees envolvendostreaming multimiacutedia

Tolerante a perdas Sensiacutevel agrave taxa

Uso de UDP DNS SNMP

Transferecircncia confiaacutevelsobre o UDP adicionarconfiabilidade no niacutevel daaplicaccedilatildeo

Recuperaccedilatildeo de erroespeciacutefica da aplicaccedilatildeo

da portade origem

32 bits

Dado da aplicaccedilatildeo(mensagem)

Formato do segmento UDP

tamanho checksumTamanho emBytes do

segmento UDPincluindo ocabeccedilalho

da portade destino

Transport Layer 3-17

Checksum UDP

Emissor Trata o conteuacutedo do

segmento como umasequecircncia de inteiros de 16 bits

checksum adiccedilatildeo (soma em complemento de 1)

o emissor coloca o valor do checksum no campo de checksum do UDP

Receptor Computa o checksum do

segmento recebido

Checa se o checksum computado eacute igual ao valor encontrado no campo checksum

NO ndash erro detectado

YES ndash nenhum errodectetado (entretantopode exister erro)

Objetivo detetar ldquoerrosrdquo no segmento transmitido

Transport Layer 3-18

Exemplo Internet Checksum Nota

Na adiccedilatildeo dos valores um carryout do bit maissignificativo deve ser adicionado ao resultado

Exemplo adiccedilatildeo de dois inteiros 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

wraparound

sumchecksum

Transport Layer 3-19

bull 31 Serviccedilos da camada de transporte

bull 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

bull 33 Transporte natildeo orientado agrave conexatildeo UDP

bull 34 Princiacutepios de transferecircncia confiaacutevel de dados

bull 35 Transporte orientado agrave conexatildeo TCPbull Estrutura do segmentobull Transferecircncia confiaacutevel de dadosbull Controle de fluxobull Gerenciamento de conexatildeo

bull 36 Princiacutepios de controle de congestionamento

bull 37 Controle de congestionamento do TCP

Camada de transporte

Transport Layer 3-20

bull Importante nas camadasde aplicaccedilatildeo transportee enlace

bull Top 10 na lista dos toacutepicos mais importantsde redes

bull Caracteriacutesticas dos canaisnatildeo confiaacuteveisdeterminaratildeo a complexidade dos protocolos confiaacuteveis de transferecircncia de dados (rdt)

Princiacutepios de transferecircncia confiaacutevel de dados

Transport Layer 3-21

ladotransmissor

ladoreceptor

rdt_send() chamada da camada superior (ex pela aplicaccedilatildeo) Passa dados paraentregar agrave camada superior receptora

udt_send() chamada pela entidadede transporte para transferir pacotes

para o receptor sobre o canal natildeoconfiaacutevel

rdt_rcv() chamada quando o pacote chegaao lado receptor do canal

deliver_data() chamada pelaentidade de transporte para

entregar dados agrave camada superior

Transferecircncia confiaacutevel o ponto de partida

Transport Layer 3-22

Etapas

bull Desenvolver incrementalmente o transmissor e o receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)

bull Considerar apenas transferecircncias de dados unidirecionaisbull a informaccedilatildeo de controle deve fluir em ambas as direccedilotildees

bull Usar maacutequinas de estados finitos (FSM) para especificar o protocolo transmissor e o receptor

estado1

estado2

evento causando transiccedilatildeo de estadosaccedilotildees tomadas na transiccedilatildeo de estado

estado quando neste ldquoestadordquoo proacuteximo estado fica

unicamente determinadopelo proacuteximo evento

eventoaccedilotildees

Transferecircncia confiaacutevel o ponto de partida

Transport Layer 3-23

bull Canal de transmissatildeoperfeitamente confiaacutevel

bull Natildeo haacute erros de bitsbull Natildeo haacute perdas de pacotes

bull FSMs separadas paratransmissor e receptor

bull Transmissor envia dados parao canal subjacente

bull Receptor lecirc os dados do canal subjacente

rdt10 Transfecircrencia confiaacutevel sobre canaisconfiaacuteveis

Transport Layer 3-24

rdt20 canal com erros de bit

bull Canal subjacente pode ldquocorromperrdquo valores dos bits num pacotebull Checksum para detectar erros de bits

bull A questatildeo como recuperar esses errosbull Reconhecimentos (ACKs) receptor avisa explicitamente aotransmissor que o pacote foi recebido corretamente

bull Reconhecimentos negativos (NAKs) receptor avisaexplicitamente ao transmissor que o pacote tem erros

bull Transmissor reenvia o pacote quando da recepccedilatildeo de um NAK

bull Novos mecanismos no rdt20 (aleacutem do rdt10)bull Detecccedilatildeo de errosbull Retorno do receptor mensagens de controle(ACK NAK) rcvr-gtsender

Transport Layer 3-25

rdt20 especificaccedilatildeo FSM

Transport Layer 3-26

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 operaccedilatildeo com ausecircncia de erros

Transport Layer 3-27

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 cenaacuterio de erro

Transport Layer 3-28

O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata

Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada

pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes

duplicados

Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do

receptor

rdt20 tem um problema fatal

Transport Layer 3-29

rdt21 transmissor trata ACKNAKsperdidos

rdt21 receptor trata ACKNAKsperdidos

Wait for 0 from below

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)

Wait for 1 from below

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)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

Transport Layer 3-31

Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados

bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1

Receptorbull Deve verificar se o pacote recebido eacute duplicado

bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor

rdt21 discussatildeo

Transport Layer 3-32

bull Mesma funcionalidade do rdt21 usando somente ACKs

bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido

bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente

rdt22 um protocolo sem NAK

Transport Layer 3-33

aguardachamada 0

de cima

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)

aguardaACK

0

fragmento FSMdo transmissor

aguarda

0 de baixo

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento FSMdo receptor

Λ

rdt22 fragmentos do transmissor e do receptor

Transport Layer 3-34

Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante

Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)

bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso

bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido

bull Exige um temporizador decrescente

rdt30 canais com erros e perdas

Transport Layer 3-35

Transmissor rdt30

Transport Layer 3-36

rdt30 em accedilatildeo

Transport Layer 3-37

rdt30 em accedilatildeo

Transport Layer 3-38

bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado

bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps

bull O protocolo de rede limita o uso dos recursos fiacutesicos

bull rdt30 funciona mas o desempenho eacute sofriacutevel

bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB

Desempenho do rdt30

Ttransmis

satildeo

= 8 kbpkt109 bs

= 8 microsegL (tamanho do pacote em bits)

R (taxa de transmissatildeo bps)=

Usender=008

30008 = 000027 L RRTT + L R

=

Transport Layer 3-39

rdt30 operaccedilatildeo pare e espere

Transmissatildeo do 1ordm Bit dopacote t = 0

emissor receptor

RTT

Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK

Recebe ACK envia proacuteximopacote t = RTT + L R

U sender

= 008

30008 = 000027

microsec

L R

RTT + L R =

Transport Layer 3-40

Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos

bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada

bull Armazenamento no transmissor eou no receptor

bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

Protocolos com paralelismo (pipelining)

Transport Layer 3-41

Pipelining aumento da utilizaccedilatildeo

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Chegada do primeiro bitChegada do uacuteltimo bit envia ACK

Chegada do ACK envia o proacuteximo pacote t = RTT + L R

U emissor

= 024

30008 = 00008

microsecon

3 L R

RTT + L R =

Aumenta a utilizaccedilatildeopor um fator de 3

Transport Layer 3-42

Protocolos do tipo Pipelining

Go-back-N visatildeo geral Emissor pode enviar ateacute N

pacotes natildeo reconhecidos(unacked) no pipeline

Receptor envia acksacumulativos

Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo

Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido

Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)

Retransmissatildeo seletiva visatildeogeral

Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)

Receptor reconhece (acks) pacotes individuais

Emissor manteacutemtemporizador para cadapacote natildeo reconhecido

Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido

Transport Layer 3-43

Transmissor

bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote

bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos

bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)

bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela

Go-Back-N

Transport Layer 3-44

GBN FSM estendida para o transmissor

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)

Λ

Λ

Transport Layer 3-45

bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum

bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem

GBN FSM estendida para o receptor

Wait

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(0ACKchksum)

Λ

udt_send(sndpkt)

default

Transport Layer 3-46

GBN em accedilatildeo

Transport Layer 3-47

bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior

bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido

bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos

Retransmissatildeo seletiva

Transport Layer 3-48

Retransmissatildeo seletiva janelas do transmissore do receptor

Transport Layer 3-49

TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de

sequumlecircncia disponiacutevel estaacute najanela envia o pacote

Timeout(n)bull Reenvia pacote n restart

timerACK (n) em

[sendbasesendbase+N]bull Marca pacote n como

recebidobull Se n eacute o menor pacote natildeo

reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido

Retransmissatildeo seletiva

RECEPTORPacote n em [rcvbase rcvbase +

N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem

entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido

pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora

Transport Layer 3-50

Retransmissatildeo seletiva em accedilatildeo

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-5

Camada de Transporte x Camada de Rede

Camada de rede comunicaccedilatildeo loacutegica entre hosts

Camada de transportecomunicaccedilatildeo loacutegica entre processos depende de (e melhora os) serviccedilos

da camada de rede

Transport Layer 3-6

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camada de Transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte semconexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevel de dados

35 Transporte orientado agraveconexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento da conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento no TCP

Transport Layer 3-7

Multiplexaccedilatildeodemultiplexaccedilatildeo

aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

P1 aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

P2P3 P4P1

host 1 host 2 host 3

= processo= socket

Entrega os segmentos recebidosno socket correto

Demultiplexaccedilatildeo no host receptor

Coleta os dados dos muacuteltiplossockets e encapsula-os como cabeccedilalho (posteriormenteutilizado na demultiplexaccedilatildeo)

Multiplexaccedilatildeo no host emissor

Transport Layer 3-8

Como trabalha a demultiplexaccedilatildeo host recebe datagramas IP

cada datagrama possui o endereccedilo IP da origem e o endereccedilo IP do destino

cada datagrama carrega 1 segmento da camada de transporte

cada segmento possui osnuacutemeros das portas de origem e de destino

o host utiliza os endereccedilos IP e os nuacutemeros das portas paraencaminhar o segmento aosocket apropriado

da porta de origem

da porta dedestino

32 bits

dado da aplicaccedilatildeo(mensagem)

outros campos docabeccedilalho

Formato do segmento TCPUDP

Transport Layer 3-9

Demultiplexaccedilatildeo sem conexatildeo

Cria sockets com nuacutemerosde porta

DatagramSocket mySocket1 = new DatagramSocket(12534)

DatagramSocket mySocket2 = new DatagramSocket(12535)

O socket UDP eacute identificadopor uma tupla de doiselementos

(endereccedilo IP destino nuacutemero porta de destino)

quando o host recebe um segmento UDP

checa o nuacutemero da porta de destino no segmento

direciona o segmento UDP para o socket que conteacutemaquele numero

datagramas IP com endereccedilosIP origem diferentes eounuacutemeros de porta de origem diferentes satildeo encaminhados ao mesmo socket

Transport Layer 3-10

Demux sem conexatildeo (cont)

DatagramSocket serverSocket = new DatagramSocket(6428)

ClienteIPB

P2

clienteIP A

P1P1P3

servidorIP C

SP 6428

DP 9157

SP 9157

DP 6428

SP 6428

DP 5775

SP 5775

DP 6428

SP provecirc ldquoendereccedilo de retornordquo

Transport Layer 3-11

Demux orientado agrave conexatildeo

O socket TCP eacuteidentificado por umatupla de 4 elementos

Endereccedilo IP de origem Nuacutemero da porta de

origem Endereccedilo IP de destino Nuacutemero da porta de

destino

host receptor utiliza osquatro valores paraencaminhar o segmentoao socket apropriado

O servidor pode suportarvaacuterios sockets TCP simultaneamente

cada socket eacute identificadopela sua tupla-4

Servidores Web possuemdiferentes sockets paracada conexatildeo com o cliente

HTTP natildeo-persistenteteraacute um socket diferentepara cada requisiccedilatildeo

Transport Layer 3-12

Demux orientado agrave conexatildeo(cont)

ClienteIPB

P1

clienteIP A

P1P2P4

servidorIP C

SP 9157

DP 80

SP 9157

DP 80

P5 P6 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Transport Layer 3-13

Connection-oriented demux Servidor Web com Threads

ClienteIPB

P1

clienteIP A

P1P2

servidorIP C

SP 9157

DP 80

SP 9157

DP 80

P4 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Transport Layer 3-14

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camada de Transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte semconexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevel de dados

35 Transporte orientado agraveconexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento da conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento no TCP

Transport Layer 3-15

UDP User Datagram Protocol [RFC 768]

Protocolo de transporteInternet ldquosem gordurasrdquo

Serviccedilo ldquomelhor esforccedilordquo os segmentos UDP podem

Ser perdidos

Ser entregues fora de ordem agrave aplicaccedilatildeo

Sem conexatildeo sem handshaking entre

o emissor UDP e o receptor UDP

cada segmento UDP eacutemanipuladoindependentemente dos outros

Porque existe o UDP Sem estabelecimento de

conexatildeo (a conexatildeo incluiatraso)

simples natildeo manteacutem o estado da conexatildeo no emissor e no receptor

Cabeccedilalho pequeno no segmento

Sem controle de congestionamento UDP pode enviar segmentos tatildeoraacutepido quanto desejado (e possiacutevel)

Transport Layer 3-16

Mais sobre o UDP

Geralmente utilizado emaplicaccedilotildees envolvendostreaming multimiacutedia

Tolerante a perdas Sensiacutevel agrave taxa

Uso de UDP DNS SNMP

Transferecircncia confiaacutevelsobre o UDP adicionarconfiabilidade no niacutevel daaplicaccedilatildeo

Recuperaccedilatildeo de erroespeciacutefica da aplicaccedilatildeo

da portade origem

32 bits

Dado da aplicaccedilatildeo(mensagem)

Formato do segmento UDP

tamanho checksumTamanho emBytes do

segmento UDPincluindo ocabeccedilalho

da portade destino

Transport Layer 3-17

Checksum UDP

Emissor Trata o conteuacutedo do

segmento como umasequecircncia de inteiros de 16 bits

checksum adiccedilatildeo (soma em complemento de 1)

o emissor coloca o valor do checksum no campo de checksum do UDP

Receptor Computa o checksum do

segmento recebido

Checa se o checksum computado eacute igual ao valor encontrado no campo checksum

NO ndash erro detectado

YES ndash nenhum errodectetado (entretantopode exister erro)

Objetivo detetar ldquoerrosrdquo no segmento transmitido

Transport Layer 3-18

Exemplo Internet Checksum Nota

Na adiccedilatildeo dos valores um carryout do bit maissignificativo deve ser adicionado ao resultado

Exemplo adiccedilatildeo de dois inteiros 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

wraparound

sumchecksum

Transport Layer 3-19

bull 31 Serviccedilos da camada de transporte

bull 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

bull 33 Transporte natildeo orientado agrave conexatildeo UDP

bull 34 Princiacutepios de transferecircncia confiaacutevel de dados

bull 35 Transporte orientado agrave conexatildeo TCPbull Estrutura do segmentobull Transferecircncia confiaacutevel de dadosbull Controle de fluxobull Gerenciamento de conexatildeo

bull 36 Princiacutepios de controle de congestionamento

bull 37 Controle de congestionamento do TCP

Camada de transporte

Transport Layer 3-20

bull Importante nas camadasde aplicaccedilatildeo transportee enlace

bull Top 10 na lista dos toacutepicos mais importantsde redes

bull Caracteriacutesticas dos canaisnatildeo confiaacuteveisdeterminaratildeo a complexidade dos protocolos confiaacuteveis de transferecircncia de dados (rdt)

Princiacutepios de transferecircncia confiaacutevel de dados

Transport Layer 3-21

ladotransmissor

ladoreceptor

rdt_send() chamada da camada superior (ex pela aplicaccedilatildeo) Passa dados paraentregar agrave camada superior receptora

udt_send() chamada pela entidadede transporte para transferir pacotes

para o receptor sobre o canal natildeoconfiaacutevel

rdt_rcv() chamada quando o pacote chegaao lado receptor do canal

deliver_data() chamada pelaentidade de transporte para

entregar dados agrave camada superior

Transferecircncia confiaacutevel o ponto de partida

Transport Layer 3-22

Etapas

bull Desenvolver incrementalmente o transmissor e o receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)

bull Considerar apenas transferecircncias de dados unidirecionaisbull a informaccedilatildeo de controle deve fluir em ambas as direccedilotildees

bull Usar maacutequinas de estados finitos (FSM) para especificar o protocolo transmissor e o receptor

estado1

estado2

evento causando transiccedilatildeo de estadosaccedilotildees tomadas na transiccedilatildeo de estado

estado quando neste ldquoestadordquoo proacuteximo estado fica

unicamente determinadopelo proacuteximo evento

eventoaccedilotildees

Transferecircncia confiaacutevel o ponto de partida

Transport Layer 3-23

bull Canal de transmissatildeoperfeitamente confiaacutevel

bull Natildeo haacute erros de bitsbull Natildeo haacute perdas de pacotes

bull FSMs separadas paratransmissor e receptor

bull Transmissor envia dados parao canal subjacente

bull Receptor lecirc os dados do canal subjacente

rdt10 Transfecircrencia confiaacutevel sobre canaisconfiaacuteveis

Transport Layer 3-24

rdt20 canal com erros de bit

bull Canal subjacente pode ldquocorromperrdquo valores dos bits num pacotebull Checksum para detectar erros de bits

bull A questatildeo como recuperar esses errosbull Reconhecimentos (ACKs) receptor avisa explicitamente aotransmissor que o pacote foi recebido corretamente

bull Reconhecimentos negativos (NAKs) receptor avisaexplicitamente ao transmissor que o pacote tem erros

bull Transmissor reenvia o pacote quando da recepccedilatildeo de um NAK

bull Novos mecanismos no rdt20 (aleacutem do rdt10)bull Detecccedilatildeo de errosbull Retorno do receptor mensagens de controle(ACK NAK) rcvr-gtsender

Transport Layer 3-25

rdt20 especificaccedilatildeo FSM

Transport Layer 3-26

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 operaccedilatildeo com ausecircncia de erros

Transport Layer 3-27

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 cenaacuterio de erro

Transport Layer 3-28

O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata

Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada

pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes

duplicados

Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do

receptor

rdt20 tem um problema fatal

Transport Layer 3-29

rdt21 transmissor trata ACKNAKsperdidos

rdt21 receptor trata ACKNAKsperdidos

Wait for 0 from below

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)

Wait for 1 from below

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)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

Transport Layer 3-31

Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados

bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1

Receptorbull Deve verificar se o pacote recebido eacute duplicado

bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor

rdt21 discussatildeo

Transport Layer 3-32

bull Mesma funcionalidade do rdt21 usando somente ACKs

bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido

bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente

rdt22 um protocolo sem NAK

Transport Layer 3-33

aguardachamada 0

de cima

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)

aguardaACK

0

fragmento FSMdo transmissor

aguarda

0 de baixo

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento FSMdo receptor

Λ

rdt22 fragmentos do transmissor e do receptor

Transport Layer 3-34

Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante

Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)

bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso

bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido

bull Exige um temporizador decrescente

rdt30 canais com erros e perdas

Transport Layer 3-35

Transmissor rdt30

Transport Layer 3-36

rdt30 em accedilatildeo

Transport Layer 3-37

rdt30 em accedilatildeo

Transport Layer 3-38

bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado

bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps

bull O protocolo de rede limita o uso dos recursos fiacutesicos

bull rdt30 funciona mas o desempenho eacute sofriacutevel

bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB

Desempenho do rdt30

Ttransmis

satildeo

= 8 kbpkt109 bs

= 8 microsegL (tamanho do pacote em bits)

R (taxa de transmissatildeo bps)=

Usender=008

30008 = 000027 L RRTT + L R

=

Transport Layer 3-39

rdt30 operaccedilatildeo pare e espere

Transmissatildeo do 1ordm Bit dopacote t = 0

emissor receptor

RTT

Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK

Recebe ACK envia proacuteximopacote t = RTT + L R

U sender

= 008

30008 = 000027

microsec

L R

RTT + L R =

Transport Layer 3-40

Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos

bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada

bull Armazenamento no transmissor eou no receptor

bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

Protocolos com paralelismo (pipelining)

Transport Layer 3-41

Pipelining aumento da utilizaccedilatildeo

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Chegada do primeiro bitChegada do uacuteltimo bit envia ACK

Chegada do ACK envia o proacuteximo pacote t = RTT + L R

U emissor

= 024

30008 = 00008

microsecon

3 L R

RTT + L R =

Aumenta a utilizaccedilatildeopor um fator de 3

Transport Layer 3-42

Protocolos do tipo Pipelining

Go-back-N visatildeo geral Emissor pode enviar ateacute N

pacotes natildeo reconhecidos(unacked) no pipeline

Receptor envia acksacumulativos

Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo

Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido

Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)

Retransmissatildeo seletiva visatildeogeral

Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)

Receptor reconhece (acks) pacotes individuais

Emissor manteacutemtemporizador para cadapacote natildeo reconhecido

Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido

Transport Layer 3-43

Transmissor

bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote

bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos

bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)

bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela

Go-Back-N

Transport Layer 3-44

GBN FSM estendida para o transmissor

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)

Λ

Λ

Transport Layer 3-45

bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum

bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem

GBN FSM estendida para o receptor

Wait

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(0ACKchksum)

Λ

udt_send(sndpkt)

default

Transport Layer 3-46

GBN em accedilatildeo

Transport Layer 3-47

bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior

bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido

bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos

Retransmissatildeo seletiva

Transport Layer 3-48

Retransmissatildeo seletiva janelas do transmissore do receptor

Transport Layer 3-49

TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de

sequumlecircncia disponiacutevel estaacute najanela envia o pacote

Timeout(n)bull Reenvia pacote n restart

timerACK (n) em

[sendbasesendbase+N]bull Marca pacote n como

recebidobull Se n eacute o menor pacote natildeo

reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido

Retransmissatildeo seletiva

RECEPTORPacote n em [rcvbase rcvbase +

N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem

entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido

pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora

Transport Layer 3-50

Retransmissatildeo seletiva em accedilatildeo

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-6

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camada de Transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte semconexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevel de dados

35 Transporte orientado agraveconexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento da conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento no TCP

Transport Layer 3-7

Multiplexaccedilatildeodemultiplexaccedilatildeo

aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

P1 aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

P2P3 P4P1

host 1 host 2 host 3

= processo= socket

Entrega os segmentos recebidosno socket correto

Demultiplexaccedilatildeo no host receptor

Coleta os dados dos muacuteltiplossockets e encapsula-os como cabeccedilalho (posteriormenteutilizado na demultiplexaccedilatildeo)

Multiplexaccedilatildeo no host emissor

Transport Layer 3-8

Como trabalha a demultiplexaccedilatildeo host recebe datagramas IP

cada datagrama possui o endereccedilo IP da origem e o endereccedilo IP do destino

cada datagrama carrega 1 segmento da camada de transporte

cada segmento possui osnuacutemeros das portas de origem e de destino

o host utiliza os endereccedilos IP e os nuacutemeros das portas paraencaminhar o segmento aosocket apropriado

da porta de origem

da porta dedestino

32 bits

dado da aplicaccedilatildeo(mensagem)

outros campos docabeccedilalho

Formato do segmento TCPUDP

Transport Layer 3-9

Demultiplexaccedilatildeo sem conexatildeo

Cria sockets com nuacutemerosde porta

DatagramSocket mySocket1 = new DatagramSocket(12534)

DatagramSocket mySocket2 = new DatagramSocket(12535)

O socket UDP eacute identificadopor uma tupla de doiselementos

(endereccedilo IP destino nuacutemero porta de destino)

quando o host recebe um segmento UDP

checa o nuacutemero da porta de destino no segmento

direciona o segmento UDP para o socket que conteacutemaquele numero

datagramas IP com endereccedilosIP origem diferentes eounuacutemeros de porta de origem diferentes satildeo encaminhados ao mesmo socket

Transport Layer 3-10

Demux sem conexatildeo (cont)

DatagramSocket serverSocket = new DatagramSocket(6428)

ClienteIPB

P2

clienteIP A

P1P1P3

servidorIP C

SP 6428

DP 9157

SP 9157

DP 6428

SP 6428

DP 5775

SP 5775

DP 6428

SP provecirc ldquoendereccedilo de retornordquo

Transport Layer 3-11

Demux orientado agrave conexatildeo

O socket TCP eacuteidentificado por umatupla de 4 elementos

Endereccedilo IP de origem Nuacutemero da porta de

origem Endereccedilo IP de destino Nuacutemero da porta de

destino

host receptor utiliza osquatro valores paraencaminhar o segmentoao socket apropriado

O servidor pode suportarvaacuterios sockets TCP simultaneamente

cada socket eacute identificadopela sua tupla-4

Servidores Web possuemdiferentes sockets paracada conexatildeo com o cliente

HTTP natildeo-persistenteteraacute um socket diferentepara cada requisiccedilatildeo

Transport Layer 3-12

Demux orientado agrave conexatildeo(cont)

ClienteIPB

P1

clienteIP A

P1P2P4

servidorIP C

SP 9157

DP 80

SP 9157

DP 80

P5 P6 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Transport Layer 3-13

Connection-oriented demux Servidor Web com Threads

ClienteIPB

P1

clienteIP A

P1P2

servidorIP C

SP 9157

DP 80

SP 9157

DP 80

P4 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Transport Layer 3-14

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camada de Transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte semconexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevel de dados

35 Transporte orientado agraveconexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento da conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento no TCP

Transport Layer 3-15

UDP User Datagram Protocol [RFC 768]

Protocolo de transporteInternet ldquosem gordurasrdquo

Serviccedilo ldquomelhor esforccedilordquo os segmentos UDP podem

Ser perdidos

Ser entregues fora de ordem agrave aplicaccedilatildeo

Sem conexatildeo sem handshaking entre

o emissor UDP e o receptor UDP

cada segmento UDP eacutemanipuladoindependentemente dos outros

Porque existe o UDP Sem estabelecimento de

conexatildeo (a conexatildeo incluiatraso)

simples natildeo manteacutem o estado da conexatildeo no emissor e no receptor

Cabeccedilalho pequeno no segmento

Sem controle de congestionamento UDP pode enviar segmentos tatildeoraacutepido quanto desejado (e possiacutevel)

Transport Layer 3-16

Mais sobre o UDP

Geralmente utilizado emaplicaccedilotildees envolvendostreaming multimiacutedia

Tolerante a perdas Sensiacutevel agrave taxa

Uso de UDP DNS SNMP

Transferecircncia confiaacutevelsobre o UDP adicionarconfiabilidade no niacutevel daaplicaccedilatildeo

Recuperaccedilatildeo de erroespeciacutefica da aplicaccedilatildeo

da portade origem

32 bits

Dado da aplicaccedilatildeo(mensagem)

Formato do segmento UDP

tamanho checksumTamanho emBytes do

segmento UDPincluindo ocabeccedilalho

da portade destino

Transport Layer 3-17

Checksum UDP

Emissor Trata o conteuacutedo do

segmento como umasequecircncia de inteiros de 16 bits

checksum adiccedilatildeo (soma em complemento de 1)

o emissor coloca o valor do checksum no campo de checksum do UDP

Receptor Computa o checksum do

segmento recebido

Checa se o checksum computado eacute igual ao valor encontrado no campo checksum

NO ndash erro detectado

YES ndash nenhum errodectetado (entretantopode exister erro)

Objetivo detetar ldquoerrosrdquo no segmento transmitido

Transport Layer 3-18

Exemplo Internet Checksum Nota

Na adiccedilatildeo dos valores um carryout do bit maissignificativo deve ser adicionado ao resultado

Exemplo adiccedilatildeo de dois inteiros 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

wraparound

sumchecksum

Transport Layer 3-19

bull 31 Serviccedilos da camada de transporte

bull 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

bull 33 Transporte natildeo orientado agrave conexatildeo UDP

bull 34 Princiacutepios de transferecircncia confiaacutevel de dados

bull 35 Transporte orientado agrave conexatildeo TCPbull Estrutura do segmentobull Transferecircncia confiaacutevel de dadosbull Controle de fluxobull Gerenciamento de conexatildeo

bull 36 Princiacutepios de controle de congestionamento

bull 37 Controle de congestionamento do TCP

Camada de transporte

Transport Layer 3-20

bull Importante nas camadasde aplicaccedilatildeo transportee enlace

bull Top 10 na lista dos toacutepicos mais importantsde redes

bull Caracteriacutesticas dos canaisnatildeo confiaacuteveisdeterminaratildeo a complexidade dos protocolos confiaacuteveis de transferecircncia de dados (rdt)

Princiacutepios de transferecircncia confiaacutevel de dados

Transport Layer 3-21

ladotransmissor

ladoreceptor

rdt_send() chamada da camada superior (ex pela aplicaccedilatildeo) Passa dados paraentregar agrave camada superior receptora

udt_send() chamada pela entidadede transporte para transferir pacotes

para o receptor sobre o canal natildeoconfiaacutevel

rdt_rcv() chamada quando o pacote chegaao lado receptor do canal

deliver_data() chamada pelaentidade de transporte para

entregar dados agrave camada superior

Transferecircncia confiaacutevel o ponto de partida

Transport Layer 3-22

Etapas

bull Desenvolver incrementalmente o transmissor e o receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)

bull Considerar apenas transferecircncias de dados unidirecionaisbull a informaccedilatildeo de controle deve fluir em ambas as direccedilotildees

bull Usar maacutequinas de estados finitos (FSM) para especificar o protocolo transmissor e o receptor

estado1

estado2

evento causando transiccedilatildeo de estadosaccedilotildees tomadas na transiccedilatildeo de estado

estado quando neste ldquoestadordquoo proacuteximo estado fica

unicamente determinadopelo proacuteximo evento

eventoaccedilotildees

Transferecircncia confiaacutevel o ponto de partida

Transport Layer 3-23

bull Canal de transmissatildeoperfeitamente confiaacutevel

bull Natildeo haacute erros de bitsbull Natildeo haacute perdas de pacotes

bull FSMs separadas paratransmissor e receptor

bull Transmissor envia dados parao canal subjacente

bull Receptor lecirc os dados do canal subjacente

rdt10 Transfecircrencia confiaacutevel sobre canaisconfiaacuteveis

Transport Layer 3-24

rdt20 canal com erros de bit

bull Canal subjacente pode ldquocorromperrdquo valores dos bits num pacotebull Checksum para detectar erros de bits

bull A questatildeo como recuperar esses errosbull Reconhecimentos (ACKs) receptor avisa explicitamente aotransmissor que o pacote foi recebido corretamente

bull Reconhecimentos negativos (NAKs) receptor avisaexplicitamente ao transmissor que o pacote tem erros

bull Transmissor reenvia o pacote quando da recepccedilatildeo de um NAK

bull Novos mecanismos no rdt20 (aleacutem do rdt10)bull Detecccedilatildeo de errosbull Retorno do receptor mensagens de controle(ACK NAK) rcvr-gtsender

Transport Layer 3-25

rdt20 especificaccedilatildeo FSM

Transport Layer 3-26

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 operaccedilatildeo com ausecircncia de erros

Transport Layer 3-27

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 cenaacuterio de erro

Transport Layer 3-28

O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata

Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada

pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes

duplicados

Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do

receptor

rdt20 tem um problema fatal

Transport Layer 3-29

rdt21 transmissor trata ACKNAKsperdidos

rdt21 receptor trata ACKNAKsperdidos

Wait for 0 from below

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)

Wait for 1 from below

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)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

Transport Layer 3-31

Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados

bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1

Receptorbull Deve verificar se o pacote recebido eacute duplicado

bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor

rdt21 discussatildeo

Transport Layer 3-32

bull Mesma funcionalidade do rdt21 usando somente ACKs

bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido

bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente

rdt22 um protocolo sem NAK

Transport Layer 3-33

aguardachamada 0

de cima

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)

aguardaACK

0

fragmento FSMdo transmissor

aguarda

0 de baixo

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento FSMdo receptor

Λ

rdt22 fragmentos do transmissor e do receptor

Transport Layer 3-34

Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante

Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)

bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso

bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido

bull Exige um temporizador decrescente

rdt30 canais com erros e perdas

Transport Layer 3-35

Transmissor rdt30

Transport Layer 3-36

rdt30 em accedilatildeo

Transport Layer 3-37

rdt30 em accedilatildeo

Transport Layer 3-38

bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado

bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps

bull O protocolo de rede limita o uso dos recursos fiacutesicos

bull rdt30 funciona mas o desempenho eacute sofriacutevel

bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB

Desempenho do rdt30

Ttransmis

satildeo

= 8 kbpkt109 bs

= 8 microsegL (tamanho do pacote em bits)

R (taxa de transmissatildeo bps)=

Usender=008

30008 = 000027 L RRTT + L R

=

Transport Layer 3-39

rdt30 operaccedilatildeo pare e espere

Transmissatildeo do 1ordm Bit dopacote t = 0

emissor receptor

RTT

Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK

Recebe ACK envia proacuteximopacote t = RTT + L R

U sender

= 008

30008 = 000027

microsec

L R

RTT + L R =

Transport Layer 3-40

Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos

bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada

bull Armazenamento no transmissor eou no receptor

bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

Protocolos com paralelismo (pipelining)

Transport Layer 3-41

Pipelining aumento da utilizaccedilatildeo

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Chegada do primeiro bitChegada do uacuteltimo bit envia ACK

Chegada do ACK envia o proacuteximo pacote t = RTT + L R

U emissor

= 024

30008 = 00008

microsecon

3 L R

RTT + L R =

Aumenta a utilizaccedilatildeopor um fator de 3

Transport Layer 3-42

Protocolos do tipo Pipelining

Go-back-N visatildeo geral Emissor pode enviar ateacute N

pacotes natildeo reconhecidos(unacked) no pipeline

Receptor envia acksacumulativos

Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo

Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido

Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)

Retransmissatildeo seletiva visatildeogeral

Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)

Receptor reconhece (acks) pacotes individuais

Emissor manteacutemtemporizador para cadapacote natildeo reconhecido

Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido

Transport Layer 3-43

Transmissor

bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote

bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos

bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)

bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela

Go-Back-N

Transport Layer 3-44

GBN FSM estendida para o transmissor

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)

Λ

Λ

Transport Layer 3-45

bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum

bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem

GBN FSM estendida para o receptor

Wait

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(0ACKchksum)

Λ

udt_send(sndpkt)

default

Transport Layer 3-46

GBN em accedilatildeo

Transport Layer 3-47

bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior

bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido

bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos

Retransmissatildeo seletiva

Transport Layer 3-48

Retransmissatildeo seletiva janelas do transmissore do receptor

Transport Layer 3-49

TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de

sequumlecircncia disponiacutevel estaacute najanela envia o pacote

Timeout(n)bull Reenvia pacote n restart

timerACK (n) em

[sendbasesendbase+N]bull Marca pacote n como

recebidobull Se n eacute o menor pacote natildeo

reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido

Retransmissatildeo seletiva

RECEPTORPacote n em [rcvbase rcvbase +

N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem

entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido

pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora

Transport Layer 3-50

Retransmissatildeo seletiva em accedilatildeo

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-7

Multiplexaccedilatildeodemultiplexaccedilatildeo

aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

P1 aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

P2P3 P4P1

host 1 host 2 host 3

= processo= socket

Entrega os segmentos recebidosno socket correto

Demultiplexaccedilatildeo no host receptor

Coleta os dados dos muacuteltiplossockets e encapsula-os como cabeccedilalho (posteriormenteutilizado na demultiplexaccedilatildeo)

Multiplexaccedilatildeo no host emissor

Transport Layer 3-8

Como trabalha a demultiplexaccedilatildeo host recebe datagramas IP

cada datagrama possui o endereccedilo IP da origem e o endereccedilo IP do destino

cada datagrama carrega 1 segmento da camada de transporte

cada segmento possui osnuacutemeros das portas de origem e de destino

o host utiliza os endereccedilos IP e os nuacutemeros das portas paraencaminhar o segmento aosocket apropriado

da porta de origem

da porta dedestino

32 bits

dado da aplicaccedilatildeo(mensagem)

outros campos docabeccedilalho

Formato do segmento TCPUDP

Transport Layer 3-9

Demultiplexaccedilatildeo sem conexatildeo

Cria sockets com nuacutemerosde porta

DatagramSocket mySocket1 = new DatagramSocket(12534)

DatagramSocket mySocket2 = new DatagramSocket(12535)

O socket UDP eacute identificadopor uma tupla de doiselementos

(endereccedilo IP destino nuacutemero porta de destino)

quando o host recebe um segmento UDP

checa o nuacutemero da porta de destino no segmento

direciona o segmento UDP para o socket que conteacutemaquele numero

datagramas IP com endereccedilosIP origem diferentes eounuacutemeros de porta de origem diferentes satildeo encaminhados ao mesmo socket

Transport Layer 3-10

Demux sem conexatildeo (cont)

DatagramSocket serverSocket = new DatagramSocket(6428)

ClienteIPB

P2

clienteIP A

P1P1P3

servidorIP C

SP 6428

DP 9157

SP 9157

DP 6428

SP 6428

DP 5775

SP 5775

DP 6428

SP provecirc ldquoendereccedilo de retornordquo

Transport Layer 3-11

Demux orientado agrave conexatildeo

O socket TCP eacuteidentificado por umatupla de 4 elementos

Endereccedilo IP de origem Nuacutemero da porta de

origem Endereccedilo IP de destino Nuacutemero da porta de

destino

host receptor utiliza osquatro valores paraencaminhar o segmentoao socket apropriado

O servidor pode suportarvaacuterios sockets TCP simultaneamente

cada socket eacute identificadopela sua tupla-4

Servidores Web possuemdiferentes sockets paracada conexatildeo com o cliente

HTTP natildeo-persistenteteraacute um socket diferentepara cada requisiccedilatildeo

Transport Layer 3-12

Demux orientado agrave conexatildeo(cont)

ClienteIPB

P1

clienteIP A

P1P2P4

servidorIP C

SP 9157

DP 80

SP 9157

DP 80

P5 P6 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Transport Layer 3-13

Connection-oriented demux Servidor Web com Threads

ClienteIPB

P1

clienteIP A

P1P2

servidorIP C

SP 9157

DP 80

SP 9157

DP 80

P4 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Transport Layer 3-14

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camada de Transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte semconexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevel de dados

35 Transporte orientado agraveconexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento da conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento no TCP

Transport Layer 3-15

UDP User Datagram Protocol [RFC 768]

Protocolo de transporteInternet ldquosem gordurasrdquo

Serviccedilo ldquomelhor esforccedilordquo os segmentos UDP podem

Ser perdidos

Ser entregues fora de ordem agrave aplicaccedilatildeo

Sem conexatildeo sem handshaking entre

o emissor UDP e o receptor UDP

cada segmento UDP eacutemanipuladoindependentemente dos outros

Porque existe o UDP Sem estabelecimento de

conexatildeo (a conexatildeo incluiatraso)

simples natildeo manteacutem o estado da conexatildeo no emissor e no receptor

Cabeccedilalho pequeno no segmento

Sem controle de congestionamento UDP pode enviar segmentos tatildeoraacutepido quanto desejado (e possiacutevel)

Transport Layer 3-16

Mais sobre o UDP

Geralmente utilizado emaplicaccedilotildees envolvendostreaming multimiacutedia

Tolerante a perdas Sensiacutevel agrave taxa

Uso de UDP DNS SNMP

Transferecircncia confiaacutevelsobre o UDP adicionarconfiabilidade no niacutevel daaplicaccedilatildeo

Recuperaccedilatildeo de erroespeciacutefica da aplicaccedilatildeo

da portade origem

32 bits

Dado da aplicaccedilatildeo(mensagem)

Formato do segmento UDP

tamanho checksumTamanho emBytes do

segmento UDPincluindo ocabeccedilalho

da portade destino

Transport Layer 3-17

Checksum UDP

Emissor Trata o conteuacutedo do

segmento como umasequecircncia de inteiros de 16 bits

checksum adiccedilatildeo (soma em complemento de 1)

o emissor coloca o valor do checksum no campo de checksum do UDP

Receptor Computa o checksum do

segmento recebido

Checa se o checksum computado eacute igual ao valor encontrado no campo checksum

NO ndash erro detectado

YES ndash nenhum errodectetado (entretantopode exister erro)

Objetivo detetar ldquoerrosrdquo no segmento transmitido

Transport Layer 3-18

Exemplo Internet Checksum Nota

Na adiccedilatildeo dos valores um carryout do bit maissignificativo deve ser adicionado ao resultado

Exemplo adiccedilatildeo de dois inteiros 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

wraparound

sumchecksum

Transport Layer 3-19

bull 31 Serviccedilos da camada de transporte

bull 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

bull 33 Transporte natildeo orientado agrave conexatildeo UDP

bull 34 Princiacutepios de transferecircncia confiaacutevel de dados

bull 35 Transporte orientado agrave conexatildeo TCPbull Estrutura do segmentobull Transferecircncia confiaacutevel de dadosbull Controle de fluxobull Gerenciamento de conexatildeo

bull 36 Princiacutepios de controle de congestionamento

bull 37 Controle de congestionamento do TCP

Camada de transporte

Transport Layer 3-20

bull Importante nas camadasde aplicaccedilatildeo transportee enlace

bull Top 10 na lista dos toacutepicos mais importantsde redes

bull Caracteriacutesticas dos canaisnatildeo confiaacuteveisdeterminaratildeo a complexidade dos protocolos confiaacuteveis de transferecircncia de dados (rdt)

Princiacutepios de transferecircncia confiaacutevel de dados

Transport Layer 3-21

ladotransmissor

ladoreceptor

rdt_send() chamada da camada superior (ex pela aplicaccedilatildeo) Passa dados paraentregar agrave camada superior receptora

udt_send() chamada pela entidadede transporte para transferir pacotes

para o receptor sobre o canal natildeoconfiaacutevel

rdt_rcv() chamada quando o pacote chegaao lado receptor do canal

deliver_data() chamada pelaentidade de transporte para

entregar dados agrave camada superior

Transferecircncia confiaacutevel o ponto de partida

Transport Layer 3-22

Etapas

bull Desenvolver incrementalmente o transmissor e o receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)

bull Considerar apenas transferecircncias de dados unidirecionaisbull a informaccedilatildeo de controle deve fluir em ambas as direccedilotildees

bull Usar maacutequinas de estados finitos (FSM) para especificar o protocolo transmissor e o receptor

estado1

estado2

evento causando transiccedilatildeo de estadosaccedilotildees tomadas na transiccedilatildeo de estado

estado quando neste ldquoestadordquoo proacuteximo estado fica

unicamente determinadopelo proacuteximo evento

eventoaccedilotildees

Transferecircncia confiaacutevel o ponto de partida

Transport Layer 3-23

bull Canal de transmissatildeoperfeitamente confiaacutevel

bull Natildeo haacute erros de bitsbull Natildeo haacute perdas de pacotes

bull FSMs separadas paratransmissor e receptor

bull Transmissor envia dados parao canal subjacente

bull Receptor lecirc os dados do canal subjacente

rdt10 Transfecircrencia confiaacutevel sobre canaisconfiaacuteveis

Transport Layer 3-24

rdt20 canal com erros de bit

bull Canal subjacente pode ldquocorromperrdquo valores dos bits num pacotebull Checksum para detectar erros de bits

bull A questatildeo como recuperar esses errosbull Reconhecimentos (ACKs) receptor avisa explicitamente aotransmissor que o pacote foi recebido corretamente

bull Reconhecimentos negativos (NAKs) receptor avisaexplicitamente ao transmissor que o pacote tem erros

bull Transmissor reenvia o pacote quando da recepccedilatildeo de um NAK

bull Novos mecanismos no rdt20 (aleacutem do rdt10)bull Detecccedilatildeo de errosbull Retorno do receptor mensagens de controle(ACK NAK) rcvr-gtsender

Transport Layer 3-25

rdt20 especificaccedilatildeo FSM

Transport Layer 3-26

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 operaccedilatildeo com ausecircncia de erros

Transport Layer 3-27

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 cenaacuterio de erro

Transport Layer 3-28

O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata

Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada

pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes

duplicados

Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do

receptor

rdt20 tem um problema fatal

Transport Layer 3-29

rdt21 transmissor trata ACKNAKsperdidos

rdt21 receptor trata ACKNAKsperdidos

Wait for 0 from below

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)

Wait for 1 from below

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)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

Transport Layer 3-31

Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados

bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1

Receptorbull Deve verificar se o pacote recebido eacute duplicado

bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor

rdt21 discussatildeo

Transport Layer 3-32

bull Mesma funcionalidade do rdt21 usando somente ACKs

bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido

bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente

rdt22 um protocolo sem NAK

Transport Layer 3-33

aguardachamada 0

de cima

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)

aguardaACK

0

fragmento FSMdo transmissor

aguarda

0 de baixo

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento FSMdo receptor

Λ

rdt22 fragmentos do transmissor e do receptor

Transport Layer 3-34

Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante

Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)

bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso

bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido

bull Exige um temporizador decrescente

rdt30 canais com erros e perdas

Transport Layer 3-35

Transmissor rdt30

Transport Layer 3-36

rdt30 em accedilatildeo

Transport Layer 3-37

rdt30 em accedilatildeo

Transport Layer 3-38

bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado

bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps

bull O protocolo de rede limita o uso dos recursos fiacutesicos

bull rdt30 funciona mas o desempenho eacute sofriacutevel

bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB

Desempenho do rdt30

Ttransmis

satildeo

= 8 kbpkt109 bs

= 8 microsegL (tamanho do pacote em bits)

R (taxa de transmissatildeo bps)=

Usender=008

30008 = 000027 L RRTT + L R

=

Transport Layer 3-39

rdt30 operaccedilatildeo pare e espere

Transmissatildeo do 1ordm Bit dopacote t = 0

emissor receptor

RTT

Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK

Recebe ACK envia proacuteximopacote t = RTT + L R

U sender

= 008

30008 = 000027

microsec

L R

RTT + L R =

Transport Layer 3-40

Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos

bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada

bull Armazenamento no transmissor eou no receptor

bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

Protocolos com paralelismo (pipelining)

Transport Layer 3-41

Pipelining aumento da utilizaccedilatildeo

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Chegada do primeiro bitChegada do uacuteltimo bit envia ACK

Chegada do ACK envia o proacuteximo pacote t = RTT + L R

U emissor

= 024

30008 = 00008

microsecon

3 L R

RTT + L R =

Aumenta a utilizaccedilatildeopor um fator de 3

Transport Layer 3-42

Protocolos do tipo Pipelining

Go-back-N visatildeo geral Emissor pode enviar ateacute N

pacotes natildeo reconhecidos(unacked) no pipeline

Receptor envia acksacumulativos

Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo

Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido

Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)

Retransmissatildeo seletiva visatildeogeral

Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)

Receptor reconhece (acks) pacotes individuais

Emissor manteacutemtemporizador para cadapacote natildeo reconhecido

Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido

Transport Layer 3-43

Transmissor

bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote

bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos

bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)

bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela

Go-Back-N

Transport Layer 3-44

GBN FSM estendida para o transmissor

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)

Λ

Λ

Transport Layer 3-45

bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum

bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem

GBN FSM estendida para o receptor

Wait

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(0ACKchksum)

Λ

udt_send(sndpkt)

default

Transport Layer 3-46

GBN em accedilatildeo

Transport Layer 3-47

bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior

bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido

bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos

Retransmissatildeo seletiva

Transport Layer 3-48

Retransmissatildeo seletiva janelas do transmissore do receptor

Transport Layer 3-49

TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de

sequumlecircncia disponiacutevel estaacute najanela envia o pacote

Timeout(n)bull Reenvia pacote n restart

timerACK (n) em

[sendbasesendbase+N]bull Marca pacote n como

recebidobull Se n eacute o menor pacote natildeo

reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido

Retransmissatildeo seletiva

RECEPTORPacote n em [rcvbase rcvbase +

N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem

entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido

pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora

Transport Layer 3-50

Retransmissatildeo seletiva em accedilatildeo

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-8

Como trabalha a demultiplexaccedilatildeo host recebe datagramas IP

cada datagrama possui o endereccedilo IP da origem e o endereccedilo IP do destino

cada datagrama carrega 1 segmento da camada de transporte

cada segmento possui osnuacutemeros das portas de origem e de destino

o host utiliza os endereccedilos IP e os nuacutemeros das portas paraencaminhar o segmento aosocket apropriado

da porta de origem

da porta dedestino

32 bits

dado da aplicaccedilatildeo(mensagem)

outros campos docabeccedilalho

Formato do segmento TCPUDP

Transport Layer 3-9

Demultiplexaccedilatildeo sem conexatildeo

Cria sockets com nuacutemerosde porta

DatagramSocket mySocket1 = new DatagramSocket(12534)

DatagramSocket mySocket2 = new DatagramSocket(12535)

O socket UDP eacute identificadopor uma tupla de doiselementos

(endereccedilo IP destino nuacutemero porta de destino)

quando o host recebe um segmento UDP

checa o nuacutemero da porta de destino no segmento

direciona o segmento UDP para o socket que conteacutemaquele numero

datagramas IP com endereccedilosIP origem diferentes eounuacutemeros de porta de origem diferentes satildeo encaminhados ao mesmo socket

Transport Layer 3-10

Demux sem conexatildeo (cont)

DatagramSocket serverSocket = new DatagramSocket(6428)

ClienteIPB

P2

clienteIP A

P1P1P3

servidorIP C

SP 6428

DP 9157

SP 9157

DP 6428

SP 6428

DP 5775

SP 5775

DP 6428

SP provecirc ldquoendereccedilo de retornordquo

Transport Layer 3-11

Demux orientado agrave conexatildeo

O socket TCP eacuteidentificado por umatupla de 4 elementos

Endereccedilo IP de origem Nuacutemero da porta de

origem Endereccedilo IP de destino Nuacutemero da porta de

destino

host receptor utiliza osquatro valores paraencaminhar o segmentoao socket apropriado

O servidor pode suportarvaacuterios sockets TCP simultaneamente

cada socket eacute identificadopela sua tupla-4

Servidores Web possuemdiferentes sockets paracada conexatildeo com o cliente

HTTP natildeo-persistenteteraacute um socket diferentepara cada requisiccedilatildeo

Transport Layer 3-12

Demux orientado agrave conexatildeo(cont)

ClienteIPB

P1

clienteIP A

P1P2P4

servidorIP C

SP 9157

DP 80

SP 9157

DP 80

P5 P6 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Transport Layer 3-13

Connection-oriented demux Servidor Web com Threads

ClienteIPB

P1

clienteIP A

P1P2

servidorIP C

SP 9157

DP 80

SP 9157

DP 80

P4 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Transport Layer 3-14

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camada de Transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte semconexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevel de dados

35 Transporte orientado agraveconexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento da conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento no TCP

Transport Layer 3-15

UDP User Datagram Protocol [RFC 768]

Protocolo de transporteInternet ldquosem gordurasrdquo

Serviccedilo ldquomelhor esforccedilordquo os segmentos UDP podem

Ser perdidos

Ser entregues fora de ordem agrave aplicaccedilatildeo

Sem conexatildeo sem handshaking entre

o emissor UDP e o receptor UDP

cada segmento UDP eacutemanipuladoindependentemente dos outros

Porque existe o UDP Sem estabelecimento de

conexatildeo (a conexatildeo incluiatraso)

simples natildeo manteacutem o estado da conexatildeo no emissor e no receptor

Cabeccedilalho pequeno no segmento

Sem controle de congestionamento UDP pode enviar segmentos tatildeoraacutepido quanto desejado (e possiacutevel)

Transport Layer 3-16

Mais sobre o UDP

Geralmente utilizado emaplicaccedilotildees envolvendostreaming multimiacutedia

Tolerante a perdas Sensiacutevel agrave taxa

Uso de UDP DNS SNMP

Transferecircncia confiaacutevelsobre o UDP adicionarconfiabilidade no niacutevel daaplicaccedilatildeo

Recuperaccedilatildeo de erroespeciacutefica da aplicaccedilatildeo

da portade origem

32 bits

Dado da aplicaccedilatildeo(mensagem)

Formato do segmento UDP

tamanho checksumTamanho emBytes do

segmento UDPincluindo ocabeccedilalho

da portade destino

Transport Layer 3-17

Checksum UDP

Emissor Trata o conteuacutedo do

segmento como umasequecircncia de inteiros de 16 bits

checksum adiccedilatildeo (soma em complemento de 1)

o emissor coloca o valor do checksum no campo de checksum do UDP

Receptor Computa o checksum do

segmento recebido

Checa se o checksum computado eacute igual ao valor encontrado no campo checksum

NO ndash erro detectado

YES ndash nenhum errodectetado (entretantopode exister erro)

Objetivo detetar ldquoerrosrdquo no segmento transmitido

Transport Layer 3-18

Exemplo Internet Checksum Nota

Na adiccedilatildeo dos valores um carryout do bit maissignificativo deve ser adicionado ao resultado

Exemplo adiccedilatildeo de dois inteiros 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

wraparound

sumchecksum

Transport Layer 3-19

bull 31 Serviccedilos da camada de transporte

bull 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

bull 33 Transporte natildeo orientado agrave conexatildeo UDP

bull 34 Princiacutepios de transferecircncia confiaacutevel de dados

bull 35 Transporte orientado agrave conexatildeo TCPbull Estrutura do segmentobull Transferecircncia confiaacutevel de dadosbull Controle de fluxobull Gerenciamento de conexatildeo

bull 36 Princiacutepios de controle de congestionamento

bull 37 Controle de congestionamento do TCP

Camada de transporte

Transport Layer 3-20

bull Importante nas camadasde aplicaccedilatildeo transportee enlace

bull Top 10 na lista dos toacutepicos mais importantsde redes

bull Caracteriacutesticas dos canaisnatildeo confiaacuteveisdeterminaratildeo a complexidade dos protocolos confiaacuteveis de transferecircncia de dados (rdt)

Princiacutepios de transferecircncia confiaacutevel de dados

Transport Layer 3-21

ladotransmissor

ladoreceptor

rdt_send() chamada da camada superior (ex pela aplicaccedilatildeo) Passa dados paraentregar agrave camada superior receptora

udt_send() chamada pela entidadede transporte para transferir pacotes

para o receptor sobre o canal natildeoconfiaacutevel

rdt_rcv() chamada quando o pacote chegaao lado receptor do canal

deliver_data() chamada pelaentidade de transporte para

entregar dados agrave camada superior

Transferecircncia confiaacutevel o ponto de partida

Transport Layer 3-22

Etapas

bull Desenvolver incrementalmente o transmissor e o receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)

bull Considerar apenas transferecircncias de dados unidirecionaisbull a informaccedilatildeo de controle deve fluir em ambas as direccedilotildees

bull Usar maacutequinas de estados finitos (FSM) para especificar o protocolo transmissor e o receptor

estado1

estado2

evento causando transiccedilatildeo de estadosaccedilotildees tomadas na transiccedilatildeo de estado

estado quando neste ldquoestadordquoo proacuteximo estado fica

unicamente determinadopelo proacuteximo evento

eventoaccedilotildees

Transferecircncia confiaacutevel o ponto de partida

Transport Layer 3-23

bull Canal de transmissatildeoperfeitamente confiaacutevel

bull Natildeo haacute erros de bitsbull Natildeo haacute perdas de pacotes

bull FSMs separadas paratransmissor e receptor

bull Transmissor envia dados parao canal subjacente

bull Receptor lecirc os dados do canal subjacente

rdt10 Transfecircrencia confiaacutevel sobre canaisconfiaacuteveis

Transport Layer 3-24

rdt20 canal com erros de bit

bull Canal subjacente pode ldquocorromperrdquo valores dos bits num pacotebull Checksum para detectar erros de bits

bull A questatildeo como recuperar esses errosbull Reconhecimentos (ACKs) receptor avisa explicitamente aotransmissor que o pacote foi recebido corretamente

bull Reconhecimentos negativos (NAKs) receptor avisaexplicitamente ao transmissor que o pacote tem erros

bull Transmissor reenvia o pacote quando da recepccedilatildeo de um NAK

bull Novos mecanismos no rdt20 (aleacutem do rdt10)bull Detecccedilatildeo de errosbull Retorno do receptor mensagens de controle(ACK NAK) rcvr-gtsender

Transport Layer 3-25

rdt20 especificaccedilatildeo FSM

Transport Layer 3-26

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 operaccedilatildeo com ausecircncia de erros

Transport Layer 3-27

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 cenaacuterio de erro

Transport Layer 3-28

O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata

Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada

pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes

duplicados

Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do

receptor

rdt20 tem um problema fatal

Transport Layer 3-29

rdt21 transmissor trata ACKNAKsperdidos

rdt21 receptor trata ACKNAKsperdidos

Wait for 0 from below

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)

Wait for 1 from below

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)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

Transport Layer 3-31

Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados

bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1

Receptorbull Deve verificar se o pacote recebido eacute duplicado

bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor

rdt21 discussatildeo

Transport Layer 3-32

bull Mesma funcionalidade do rdt21 usando somente ACKs

bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido

bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente

rdt22 um protocolo sem NAK

Transport Layer 3-33

aguardachamada 0

de cima

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)

aguardaACK

0

fragmento FSMdo transmissor

aguarda

0 de baixo

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento FSMdo receptor

Λ

rdt22 fragmentos do transmissor e do receptor

Transport Layer 3-34

Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante

Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)

bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso

bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido

bull Exige um temporizador decrescente

rdt30 canais com erros e perdas

Transport Layer 3-35

Transmissor rdt30

Transport Layer 3-36

rdt30 em accedilatildeo

Transport Layer 3-37

rdt30 em accedilatildeo

Transport Layer 3-38

bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado

bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps

bull O protocolo de rede limita o uso dos recursos fiacutesicos

bull rdt30 funciona mas o desempenho eacute sofriacutevel

bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB

Desempenho do rdt30

Ttransmis

satildeo

= 8 kbpkt109 bs

= 8 microsegL (tamanho do pacote em bits)

R (taxa de transmissatildeo bps)=

Usender=008

30008 = 000027 L RRTT + L R

=

Transport Layer 3-39

rdt30 operaccedilatildeo pare e espere

Transmissatildeo do 1ordm Bit dopacote t = 0

emissor receptor

RTT

Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK

Recebe ACK envia proacuteximopacote t = RTT + L R

U sender

= 008

30008 = 000027

microsec

L R

RTT + L R =

Transport Layer 3-40

Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos

bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada

bull Armazenamento no transmissor eou no receptor

bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

Protocolos com paralelismo (pipelining)

Transport Layer 3-41

Pipelining aumento da utilizaccedilatildeo

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Chegada do primeiro bitChegada do uacuteltimo bit envia ACK

Chegada do ACK envia o proacuteximo pacote t = RTT + L R

U emissor

= 024

30008 = 00008

microsecon

3 L R

RTT + L R =

Aumenta a utilizaccedilatildeopor um fator de 3

Transport Layer 3-42

Protocolos do tipo Pipelining

Go-back-N visatildeo geral Emissor pode enviar ateacute N

pacotes natildeo reconhecidos(unacked) no pipeline

Receptor envia acksacumulativos

Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo

Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido

Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)

Retransmissatildeo seletiva visatildeogeral

Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)

Receptor reconhece (acks) pacotes individuais

Emissor manteacutemtemporizador para cadapacote natildeo reconhecido

Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido

Transport Layer 3-43

Transmissor

bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote

bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos

bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)

bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela

Go-Back-N

Transport Layer 3-44

GBN FSM estendida para o transmissor

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)

Λ

Λ

Transport Layer 3-45

bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum

bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem

GBN FSM estendida para o receptor

Wait

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(0ACKchksum)

Λ

udt_send(sndpkt)

default

Transport Layer 3-46

GBN em accedilatildeo

Transport Layer 3-47

bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior

bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido

bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos

Retransmissatildeo seletiva

Transport Layer 3-48

Retransmissatildeo seletiva janelas do transmissore do receptor

Transport Layer 3-49

TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de

sequumlecircncia disponiacutevel estaacute najanela envia o pacote

Timeout(n)bull Reenvia pacote n restart

timerACK (n) em

[sendbasesendbase+N]bull Marca pacote n como

recebidobull Se n eacute o menor pacote natildeo

reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido

Retransmissatildeo seletiva

RECEPTORPacote n em [rcvbase rcvbase +

N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem

entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido

pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora

Transport Layer 3-50

Retransmissatildeo seletiva em accedilatildeo

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-9

Demultiplexaccedilatildeo sem conexatildeo

Cria sockets com nuacutemerosde porta

DatagramSocket mySocket1 = new DatagramSocket(12534)

DatagramSocket mySocket2 = new DatagramSocket(12535)

O socket UDP eacute identificadopor uma tupla de doiselementos

(endereccedilo IP destino nuacutemero porta de destino)

quando o host recebe um segmento UDP

checa o nuacutemero da porta de destino no segmento

direciona o segmento UDP para o socket que conteacutemaquele numero

datagramas IP com endereccedilosIP origem diferentes eounuacutemeros de porta de origem diferentes satildeo encaminhados ao mesmo socket

Transport Layer 3-10

Demux sem conexatildeo (cont)

DatagramSocket serverSocket = new DatagramSocket(6428)

ClienteIPB

P2

clienteIP A

P1P1P3

servidorIP C

SP 6428

DP 9157

SP 9157

DP 6428

SP 6428

DP 5775

SP 5775

DP 6428

SP provecirc ldquoendereccedilo de retornordquo

Transport Layer 3-11

Demux orientado agrave conexatildeo

O socket TCP eacuteidentificado por umatupla de 4 elementos

Endereccedilo IP de origem Nuacutemero da porta de

origem Endereccedilo IP de destino Nuacutemero da porta de

destino

host receptor utiliza osquatro valores paraencaminhar o segmentoao socket apropriado

O servidor pode suportarvaacuterios sockets TCP simultaneamente

cada socket eacute identificadopela sua tupla-4

Servidores Web possuemdiferentes sockets paracada conexatildeo com o cliente

HTTP natildeo-persistenteteraacute um socket diferentepara cada requisiccedilatildeo

Transport Layer 3-12

Demux orientado agrave conexatildeo(cont)

ClienteIPB

P1

clienteIP A

P1P2P4

servidorIP C

SP 9157

DP 80

SP 9157

DP 80

P5 P6 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Transport Layer 3-13

Connection-oriented demux Servidor Web com Threads

ClienteIPB

P1

clienteIP A

P1P2

servidorIP C

SP 9157

DP 80

SP 9157

DP 80

P4 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Transport Layer 3-14

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camada de Transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte semconexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevel de dados

35 Transporte orientado agraveconexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento da conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento no TCP

Transport Layer 3-15

UDP User Datagram Protocol [RFC 768]

Protocolo de transporteInternet ldquosem gordurasrdquo

Serviccedilo ldquomelhor esforccedilordquo os segmentos UDP podem

Ser perdidos

Ser entregues fora de ordem agrave aplicaccedilatildeo

Sem conexatildeo sem handshaking entre

o emissor UDP e o receptor UDP

cada segmento UDP eacutemanipuladoindependentemente dos outros

Porque existe o UDP Sem estabelecimento de

conexatildeo (a conexatildeo incluiatraso)

simples natildeo manteacutem o estado da conexatildeo no emissor e no receptor

Cabeccedilalho pequeno no segmento

Sem controle de congestionamento UDP pode enviar segmentos tatildeoraacutepido quanto desejado (e possiacutevel)

Transport Layer 3-16

Mais sobre o UDP

Geralmente utilizado emaplicaccedilotildees envolvendostreaming multimiacutedia

Tolerante a perdas Sensiacutevel agrave taxa

Uso de UDP DNS SNMP

Transferecircncia confiaacutevelsobre o UDP adicionarconfiabilidade no niacutevel daaplicaccedilatildeo

Recuperaccedilatildeo de erroespeciacutefica da aplicaccedilatildeo

da portade origem

32 bits

Dado da aplicaccedilatildeo(mensagem)

Formato do segmento UDP

tamanho checksumTamanho emBytes do

segmento UDPincluindo ocabeccedilalho

da portade destino

Transport Layer 3-17

Checksum UDP

Emissor Trata o conteuacutedo do

segmento como umasequecircncia de inteiros de 16 bits

checksum adiccedilatildeo (soma em complemento de 1)

o emissor coloca o valor do checksum no campo de checksum do UDP

Receptor Computa o checksum do

segmento recebido

Checa se o checksum computado eacute igual ao valor encontrado no campo checksum

NO ndash erro detectado

YES ndash nenhum errodectetado (entretantopode exister erro)

Objetivo detetar ldquoerrosrdquo no segmento transmitido

Transport Layer 3-18

Exemplo Internet Checksum Nota

Na adiccedilatildeo dos valores um carryout do bit maissignificativo deve ser adicionado ao resultado

Exemplo adiccedilatildeo de dois inteiros 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

wraparound

sumchecksum

Transport Layer 3-19

bull 31 Serviccedilos da camada de transporte

bull 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

bull 33 Transporte natildeo orientado agrave conexatildeo UDP

bull 34 Princiacutepios de transferecircncia confiaacutevel de dados

bull 35 Transporte orientado agrave conexatildeo TCPbull Estrutura do segmentobull Transferecircncia confiaacutevel de dadosbull Controle de fluxobull Gerenciamento de conexatildeo

bull 36 Princiacutepios de controle de congestionamento

bull 37 Controle de congestionamento do TCP

Camada de transporte

Transport Layer 3-20

bull Importante nas camadasde aplicaccedilatildeo transportee enlace

bull Top 10 na lista dos toacutepicos mais importantsde redes

bull Caracteriacutesticas dos canaisnatildeo confiaacuteveisdeterminaratildeo a complexidade dos protocolos confiaacuteveis de transferecircncia de dados (rdt)

Princiacutepios de transferecircncia confiaacutevel de dados

Transport Layer 3-21

ladotransmissor

ladoreceptor

rdt_send() chamada da camada superior (ex pela aplicaccedilatildeo) Passa dados paraentregar agrave camada superior receptora

udt_send() chamada pela entidadede transporte para transferir pacotes

para o receptor sobre o canal natildeoconfiaacutevel

rdt_rcv() chamada quando o pacote chegaao lado receptor do canal

deliver_data() chamada pelaentidade de transporte para

entregar dados agrave camada superior

Transferecircncia confiaacutevel o ponto de partida

Transport Layer 3-22

Etapas

bull Desenvolver incrementalmente o transmissor e o receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)

bull Considerar apenas transferecircncias de dados unidirecionaisbull a informaccedilatildeo de controle deve fluir em ambas as direccedilotildees

bull Usar maacutequinas de estados finitos (FSM) para especificar o protocolo transmissor e o receptor

estado1

estado2

evento causando transiccedilatildeo de estadosaccedilotildees tomadas na transiccedilatildeo de estado

estado quando neste ldquoestadordquoo proacuteximo estado fica

unicamente determinadopelo proacuteximo evento

eventoaccedilotildees

Transferecircncia confiaacutevel o ponto de partida

Transport Layer 3-23

bull Canal de transmissatildeoperfeitamente confiaacutevel

bull Natildeo haacute erros de bitsbull Natildeo haacute perdas de pacotes

bull FSMs separadas paratransmissor e receptor

bull Transmissor envia dados parao canal subjacente

bull Receptor lecirc os dados do canal subjacente

rdt10 Transfecircrencia confiaacutevel sobre canaisconfiaacuteveis

Transport Layer 3-24

rdt20 canal com erros de bit

bull Canal subjacente pode ldquocorromperrdquo valores dos bits num pacotebull Checksum para detectar erros de bits

bull A questatildeo como recuperar esses errosbull Reconhecimentos (ACKs) receptor avisa explicitamente aotransmissor que o pacote foi recebido corretamente

bull Reconhecimentos negativos (NAKs) receptor avisaexplicitamente ao transmissor que o pacote tem erros

bull Transmissor reenvia o pacote quando da recepccedilatildeo de um NAK

bull Novos mecanismos no rdt20 (aleacutem do rdt10)bull Detecccedilatildeo de errosbull Retorno do receptor mensagens de controle(ACK NAK) rcvr-gtsender

Transport Layer 3-25

rdt20 especificaccedilatildeo FSM

Transport Layer 3-26

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 operaccedilatildeo com ausecircncia de erros

Transport Layer 3-27

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 cenaacuterio de erro

Transport Layer 3-28

O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata

Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada

pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes

duplicados

Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do

receptor

rdt20 tem um problema fatal

Transport Layer 3-29

rdt21 transmissor trata ACKNAKsperdidos

rdt21 receptor trata ACKNAKsperdidos

Wait for 0 from below

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)

Wait for 1 from below

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)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

Transport Layer 3-31

Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados

bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1

Receptorbull Deve verificar se o pacote recebido eacute duplicado

bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor

rdt21 discussatildeo

Transport Layer 3-32

bull Mesma funcionalidade do rdt21 usando somente ACKs

bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido

bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente

rdt22 um protocolo sem NAK

Transport Layer 3-33

aguardachamada 0

de cima

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)

aguardaACK

0

fragmento FSMdo transmissor

aguarda

0 de baixo

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento FSMdo receptor

Λ

rdt22 fragmentos do transmissor e do receptor

Transport Layer 3-34

Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante

Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)

bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso

bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido

bull Exige um temporizador decrescente

rdt30 canais com erros e perdas

Transport Layer 3-35

Transmissor rdt30

Transport Layer 3-36

rdt30 em accedilatildeo

Transport Layer 3-37

rdt30 em accedilatildeo

Transport Layer 3-38

bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado

bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps

bull O protocolo de rede limita o uso dos recursos fiacutesicos

bull rdt30 funciona mas o desempenho eacute sofriacutevel

bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB

Desempenho do rdt30

Ttransmis

satildeo

= 8 kbpkt109 bs

= 8 microsegL (tamanho do pacote em bits)

R (taxa de transmissatildeo bps)=

Usender=008

30008 = 000027 L RRTT + L R

=

Transport Layer 3-39

rdt30 operaccedilatildeo pare e espere

Transmissatildeo do 1ordm Bit dopacote t = 0

emissor receptor

RTT

Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK

Recebe ACK envia proacuteximopacote t = RTT + L R

U sender

= 008

30008 = 000027

microsec

L R

RTT + L R =

Transport Layer 3-40

Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos

bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada

bull Armazenamento no transmissor eou no receptor

bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

Protocolos com paralelismo (pipelining)

Transport Layer 3-41

Pipelining aumento da utilizaccedilatildeo

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Chegada do primeiro bitChegada do uacuteltimo bit envia ACK

Chegada do ACK envia o proacuteximo pacote t = RTT + L R

U emissor

= 024

30008 = 00008

microsecon

3 L R

RTT + L R =

Aumenta a utilizaccedilatildeopor um fator de 3

Transport Layer 3-42

Protocolos do tipo Pipelining

Go-back-N visatildeo geral Emissor pode enviar ateacute N

pacotes natildeo reconhecidos(unacked) no pipeline

Receptor envia acksacumulativos

Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo

Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido

Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)

Retransmissatildeo seletiva visatildeogeral

Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)

Receptor reconhece (acks) pacotes individuais

Emissor manteacutemtemporizador para cadapacote natildeo reconhecido

Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido

Transport Layer 3-43

Transmissor

bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote

bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos

bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)

bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela

Go-Back-N

Transport Layer 3-44

GBN FSM estendida para o transmissor

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)

Λ

Λ

Transport Layer 3-45

bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum

bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem

GBN FSM estendida para o receptor

Wait

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(0ACKchksum)

Λ

udt_send(sndpkt)

default

Transport Layer 3-46

GBN em accedilatildeo

Transport Layer 3-47

bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior

bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido

bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos

Retransmissatildeo seletiva

Transport Layer 3-48

Retransmissatildeo seletiva janelas do transmissore do receptor

Transport Layer 3-49

TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de

sequumlecircncia disponiacutevel estaacute najanela envia o pacote

Timeout(n)bull Reenvia pacote n restart

timerACK (n) em

[sendbasesendbase+N]bull Marca pacote n como

recebidobull Se n eacute o menor pacote natildeo

reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido

Retransmissatildeo seletiva

RECEPTORPacote n em [rcvbase rcvbase +

N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem

entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido

pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora

Transport Layer 3-50

Retransmissatildeo seletiva em accedilatildeo

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-10

Demux sem conexatildeo (cont)

DatagramSocket serverSocket = new DatagramSocket(6428)

ClienteIPB

P2

clienteIP A

P1P1P3

servidorIP C

SP 6428

DP 9157

SP 9157

DP 6428

SP 6428

DP 5775

SP 5775

DP 6428

SP provecirc ldquoendereccedilo de retornordquo

Transport Layer 3-11

Demux orientado agrave conexatildeo

O socket TCP eacuteidentificado por umatupla de 4 elementos

Endereccedilo IP de origem Nuacutemero da porta de

origem Endereccedilo IP de destino Nuacutemero da porta de

destino

host receptor utiliza osquatro valores paraencaminhar o segmentoao socket apropriado

O servidor pode suportarvaacuterios sockets TCP simultaneamente

cada socket eacute identificadopela sua tupla-4

Servidores Web possuemdiferentes sockets paracada conexatildeo com o cliente

HTTP natildeo-persistenteteraacute um socket diferentepara cada requisiccedilatildeo

Transport Layer 3-12

Demux orientado agrave conexatildeo(cont)

ClienteIPB

P1

clienteIP A

P1P2P4

servidorIP C

SP 9157

DP 80

SP 9157

DP 80

P5 P6 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Transport Layer 3-13

Connection-oriented demux Servidor Web com Threads

ClienteIPB

P1

clienteIP A

P1P2

servidorIP C

SP 9157

DP 80

SP 9157

DP 80

P4 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Transport Layer 3-14

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camada de Transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte semconexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevel de dados

35 Transporte orientado agraveconexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento da conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento no TCP

Transport Layer 3-15

UDP User Datagram Protocol [RFC 768]

Protocolo de transporteInternet ldquosem gordurasrdquo

Serviccedilo ldquomelhor esforccedilordquo os segmentos UDP podem

Ser perdidos

Ser entregues fora de ordem agrave aplicaccedilatildeo

Sem conexatildeo sem handshaking entre

o emissor UDP e o receptor UDP

cada segmento UDP eacutemanipuladoindependentemente dos outros

Porque existe o UDP Sem estabelecimento de

conexatildeo (a conexatildeo incluiatraso)

simples natildeo manteacutem o estado da conexatildeo no emissor e no receptor

Cabeccedilalho pequeno no segmento

Sem controle de congestionamento UDP pode enviar segmentos tatildeoraacutepido quanto desejado (e possiacutevel)

Transport Layer 3-16

Mais sobre o UDP

Geralmente utilizado emaplicaccedilotildees envolvendostreaming multimiacutedia

Tolerante a perdas Sensiacutevel agrave taxa

Uso de UDP DNS SNMP

Transferecircncia confiaacutevelsobre o UDP adicionarconfiabilidade no niacutevel daaplicaccedilatildeo

Recuperaccedilatildeo de erroespeciacutefica da aplicaccedilatildeo

da portade origem

32 bits

Dado da aplicaccedilatildeo(mensagem)

Formato do segmento UDP

tamanho checksumTamanho emBytes do

segmento UDPincluindo ocabeccedilalho

da portade destino

Transport Layer 3-17

Checksum UDP

Emissor Trata o conteuacutedo do

segmento como umasequecircncia de inteiros de 16 bits

checksum adiccedilatildeo (soma em complemento de 1)

o emissor coloca o valor do checksum no campo de checksum do UDP

Receptor Computa o checksum do

segmento recebido

Checa se o checksum computado eacute igual ao valor encontrado no campo checksum

NO ndash erro detectado

YES ndash nenhum errodectetado (entretantopode exister erro)

Objetivo detetar ldquoerrosrdquo no segmento transmitido

Transport Layer 3-18

Exemplo Internet Checksum Nota

Na adiccedilatildeo dos valores um carryout do bit maissignificativo deve ser adicionado ao resultado

Exemplo adiccedilatildeo de dois inteiros 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

wraparound

sumchecksum

Transport Layer 3-19

bull 31 Serviccedilos da camada de transporte

bull 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

bull 33 Transporte natildeo orientado agrave conexatildeo UDP

bull 34 Princiacutepios de transferecircncia confiaacutevel de dados

bull 35 Transporte orientado agrave conexatildeo TCPbull Estrutura do segmentobull Transferecircncia confiaacutevel de dadosbull Controle de fluxobull Gerenciamento de conexatildeo

bull 36 Princiacutepios de controle de congestionamento

bull 37 Controle de congestionamento do TCP

Camada de transporte

Transport Layer 3-20

bull Importante nas camadasde aplicaccedilatildeo transportee enlace

bull Top 10 na lista dos toacutepicos mais importantsde redes

bull Caracteriacutesticas dos canaisnatildeo confiaacuteveisdeterminaratildeo a complexidade dos protocolos confiaacuteveis de transferecircncia de dados (rdt)

Princiacutepios de transferecircncia confiaacutevel de dados

Transport Layer 3-21

ladotransmissor

ladoreceptor

rdt_send() chamada da camada superior (ex pela aplicaccedilatildeo) Passa dados paraentregar agrave camada superior receptora

udt_send() chamada pela entidadede transporte para transferir pacotes

para o receptor sobre o canal natildeoconfiaacutevel

rdt_rcv() chamada quando o pacote chegaao lado receptor do canal

deliver_data() chamada pelaentidade de transporte para

entregar dados agrave camada superior

Transferecircncia confiaacutevel o ponto de partida

Transport Layer 3-22

Etapas

bull Desenvolver incrementalmente o transmissor e o receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)

bull Considerar apenas transferecircncias de dados unidirecionaisbull a informaccedilatildeo de controle deve fluir em ambas as direccedilotildees

bull Usar maacutequinas de estados finitos (FSM) para especificar o protocolo transmissor e o receptor

estado1

estado2

evento causando transiccedilatildeo de estadosaccedilotildees tomadas na transiccedilatildeo de estado

estado quando neste ldquoestadordquoo proacuteximo estado fica

unicamente determinadopelo proacuteximo evento

eventoaccedilotildees

Transferecircncia confiaacutevel o ponto de partida

Transport Layer 3-23

bull Canal de transmissatildeoperfeitamente confiaacutevel

bull Natildeo haacute erros de bitsbull Natildeo haacute perdas de pacotes

bull FSMs separadas paratransmissor e receptor

bull Transmissor envia dados parao canal subjacente

bull Receptor lecirc os dados do canal subjacente

rdt10 Transfecircrencia confiaacutevel sobre canaisconfiaacuteveis

Transport Layer 3-24

rdt20 canal com erros de bit

bull Canal subjacente pode ldquocorromperrdquo valores dos bits num pacotebull Checksum para detectar erros de bits

bull A questatildeo como recuperar esses errosbull Reconhecimentos (ACKs) receptor avisa explicitamente aotransmissor que o pacote foi recebido corretamente

bull Reconhecimentos negativos (NAKs) receptor avisaexplicitamente ao transmissor que o pacote tem erros

bull Transmissor reenvia o pacote quando da recepccedilatildeo de um NAK

bull Novos mecanismos no rdt20 (aleacutem do rdt10)bull Detecccedilatildeo de errosbull Retorno do receptor mensagens de controle(ACK NAK) rcvr-gtsender

Transport Layer 3-25

rdt20 especificaccedilatildeo FSM

Transport Layer 3-26

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 operaccedilatildeo com ausecircncia de erros

Transport Layer 3-27

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 cenaacuterio de erro

Transport Layer 3-28

O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata

Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada

pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes

duplicados

Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do

receptor

rdt20 tem um problema fatal

Transport Layer 3-29

rdt21 transmissor trata ACKNAKsperdidos

rdt21 receptor trata ACKNAKsperdidos

Wait for 0 from below

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)

Wait for 1 from below

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)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

Transport Layer 3-31

Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados

bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1

Receptorbull Deve verificar se o pacote recebido eacute duplicado

bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor

rdt21 discussatildeo

Transport Layer 3-32

bull Mesma funcionalidade do rdt21 usando somente ACKs

bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido

bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente

rdt22 um protocolo sem NAK

Transport Layer 3-33

aguardachamada 0

de cima

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)

aguardaACK

0

fragmento FSMdo transmissor

aguarda

0 de baixo

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento FSMdo receptor

Λ

rdt22 fragmentos do transmissor e do receptor

Transport Layer 3-34

Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante

Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)

bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso

bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido

bull Exige um temporizador decrescente

rdt30 canais com erros e perdas

Transport Layer 3-35

Transmissor rdt30

Transport Layer 3-36

rdt30 em accedilatildeo

Transport Layer 3-37

rdt30 em accedilatildeo

Transport Layer 3-38

bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado

bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps

bull O protocolo de rede limita o uso dos recursos fiacutesicos

bull rdt30 funciona mas o desempenho eacute sofriacutevel

bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB

Desempenho do rdt30

Ttransmis

satildeo

= 8 kbpkt109 bs

= 8 microsegL (tamanho do pacote em bits)

R (taxa de transmissatildeo bps)=

Usender=008

30008 = 000027 L RRTT + L R

=

Transport Layer 3-39

rdt30 operaccedilatildeo pare e espere

Transmissatildeo do 1ordm Bit dopacote t = 0

emissor receptor

RTT

Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK

Recebe ACK envia proacuteximopacote t = RTT + L R

U sender

= 008

30008 = 000027

microsec

L R

RTT + L R =

Transport Layer 3-40

Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos

bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada

bull Armazenamento no transmissor eou no receptor

bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

Protocolos com paralelismo (pipelining)

Transport Layer 3-41

Pipelining aumento da utilizaccedilatildeo

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Chegada do primeiro bitChegada do uacuteltimo bit envia ACK

Chegada do ACK envia o proacuteximo pacote t = RTT + L R

U emissor

= 024

30008 = 00008

microsecon

3 L R

RTT + L R =

Aumenta a utilizaccedilatildeopor um fator de 3

Transport Layer 3-42

Protocolos do tipo Pipelining

Go-back-N visatildeo geral Emissor pode enviar ateacute N

pacotes natildeo reconhecidos(unacked) no pipeline

Receptor envia acksacumulativos

Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo

Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido

Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)

Retransmissatildeo seletiva visatildeogeral

Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)

Receptor reconhece (acks) pacotes individuais

Emissor manteacutemtemporizador para cadapacote natildeo reconhecido

Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido

Transport Layer 3-43

Transmissor

bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote

bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos

bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)

bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela

Go-Back-N

Transport Layer 3-44

GBN FSM estendida para o transmissor

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)

Λ

Λ

Transport Layer 3-45

bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum

bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem

GBN FSM estendida para o receptor

Wait

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(0ACKchksum)

Λ

udt_send(sndpkt)

default

Transport Layer 3-46

GBN em accedilatildeo

Transport Layer 3-47

bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior

bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido

bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos

Retransmissatildeo seletiva

Transport Layer 3-48

Retransmissatildeo seletiva janelas do transmissore do receptor

Transport Layer 3-49

TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de

sequumlecircncia disponiacutevel estaacute najanela envia o pacote

Timeout(n)bull Reenvia pacote n restart

timerACK (n) em

[sendbasesendbase+N]bull Marca pacote n como

recebidobull Se n eacute o menor pacote natildeo

reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido

Retransmissatildeo seletiva

RECEPTORPacote n em [rcvbase rcvbase +

N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem

entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido

pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora

Transport Layer 3-50

Retransmissatildeo seletiva em accedilatildeo

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-11

Demux orientado agrave conexatildeo

O socket TCP eacuteidentificado por umatupla de 4 elementos

Endereccedilo IP de origem Nuacutemero da porta de

origem Endereccedilo IP de destino Nuacutemero da porta de

destino

host receptor utiliza osquatro valores paraencaminhar o segmentoao socket apropriado

O servidor pode suportarvaacuterios sockets TCP simultaneamente

cada socket eacute identificadopela sua tupla-4

Servidores Web possuemdiferentes sockets paracada conexatildeo com o cliente

HTTP natildeo-persistenteteraacute um socket diferentepara cada requisiccedilatildeo

Transport Layer 3-12

Demux orientado agrave conexatildeo(cont)

ClienteIPB

P1

clienteIP A

P1P2P4

servidorIP C

SP 9157

DP 80

SP 9157

DP 80

P5 P6 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Transport Layer 3-13

Connection-oriented demux Servidor Web com Threads

ClienteIPB

P1

clienteIP A

P1P2

servidorIP C

SP 9157

DP 80

SP 9157

DP 80

P4 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Transport Layer 3-14

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camada de Transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte semconexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevel de dados

35 Transporte orientado agraveconexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento da conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento no TCP

Transport Layer 3-15

UDP User Datagram Protocol [RFC 768]

Protocolo de transporteInternet ldquosem gordurasrdquo

Serviccedilo ldquomelhor esforccedilordquo os segmentos UDP podem

Ser perdidos

Ser entregues fora de ordem agrave aplicaccedilatildeo

Sem conexatildeo sem handshaking entre

o emissor UDP e o receptor UDP

cada segmento UDP eacutemanipuladoindependentemente dos outros

Porque existe o UDP Sem estabelecimento de

conexatildeo (a conexatildeo incluiatraso)

simples natildeo manteacutem o estado da conexatildeo no emissor e no receptor

Cabeccedilalho pequeno no segmento

Sem controle de congestionamento UDP pode enviar segmentos tatildeoraacutepido quanto desejado (e possiacutevel)

Transport Layer 3-16

Mais sobre o UDP

Geralmente utilizado emaplicaccedilotildees envolvendostreaming multimiacutedia

Tolerante a perdas Sensiacutevel agrave taxa

Uso de UDP DNS SNMP

Transferecircncia confiaacutevelsobre o UDP adicionarconfiabilidade no niacutevel daaplicaccedilatildeo

Recuperaccedilatildeo de erroespeciacutefica da aplicaccedilatildeo

da portade origem

32 bits

Dado da aplicaccedilatildeo(mensagem)

Formato do segmento UDP

tamanho checksumTamanho emBytes do

segmento UDPincluindo ocabeccedilalho

da portade destino

Transport Layer 3-17

Checksum UDP

Emissor Trata o conteuacutedo do

segmento como umasequecircncia de inteiros de 16 bits

checksum adiccedilatildeo (soma em complemento de 1)

o emissor coloca o valor do checksum no campo de checksum do UDP

Receptor Computa o checksum do

segmento recebido

Checa se o checksum computado eacute igual ao valor encontrado no campo checksum

NO ndash erro detectado

YES ndash nenhum errodectetado (entretantopode exister erro)

Objetivo detetar ldquoerrosrdquo no segmento transmitido

Transport Layer 3-18

Exemplo Internet Checksum Nota

Na adiccedilatildeo dos valores um carryout do bit maissignificativo deve ser adicionado ao resultado

Exemplo adiccedilatildeo de dois inteiros 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

wraparound

sumchecksum

Transport Layer 3-19

bull 31 Serviccedilos da camada de transporte

bull 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

bull 33 Transporte natildeo orientado agrave conexatildeo UDP

bull 34 Princiacutepios de transferecircncia confiaacutevel de dados

bull 35 Transporte orientado agrave conexatildeo TCPbull Estrutura do segmentobull Transferecircncia confiaacutevel de dadosbull Controle de fluxobull Gerenciamento de conexatildeo

bull 36 Princiacutepios de controle de congestionamento

bull 37 Controle de congestionamento do TCP

Camada de transporte

Transport Layer 3-20

bull Importante nas camadasde aplicaccedilatildeo transportee enlace

bull Top 10 na lista dos toacutepicos mais importantsde redes

bull Caracteriacutesticas dos canaisnatildeo confiaacuteveisdeterminaratildeo a complexidade dos protocolos confiaacuteveis de transferecircncia de dados (rdt)

Princiacutepios de transferecircncia confiaacutevel de dados

Transport Layer 3-21

ladotransmissor

ladoreceptor

rdt_send() chamada da camada superior (ex pela aplicaccedilatildeo) Passa dados paraentregar agrave camada superior receptora

udt_send() chamada pela entidadede transporte para transferir pacotes

para o receptor sobre o canal natildeoconfiaacutevel

rdt_rcv() chamada quando o pacote chegaao lado receptor do canal

deliver_data() chamada pelaentidade de transporte para

entregar dados agrave camada superior

Transferecircncia confiaacutevel o ponto de partida

Transport Layer 3-22

Etapas

bull Desenvolver incrementalmente o transmissor e o receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)

bull Considerar apenas transferecircncias de dados unidirecionaisbull a informaccedilatildeo de controle deve fluir em ambas as direccedilotildees

bull Usar maacutequinas de estados finitos (FSM) para especificar o protocolo transmissor e o receptor

estado1

estado2

evento causando transiccedilatildeo de estadosaccedilotildees tomadas na transiccedilatildeo de estado

estado quando neste ldquoestadordquoo proacuteximo estado fica

unicamente determinadopelo proacuteximo evento

eventoaccedilotildees

Transferecircncia confiaacutevel o ponto de partida

Transport Layer 3-23

bull Canal de transmissatildeoperfeitamente confiaacutevel

bull Natildeo haacute erros de bitsbull Natildeo haacute perdas de pacotes

bull FSMs separadas paratransmissor e receptor

bull Transmissor envia dados parao canal subjacente

bull Receptor lecirc os dados do canal subjacente

rdt10 Transfecircrencia confiaacutevel sobre canaisconfiaacuteveis

Transport Layer 3-24

rdt20 canal com erros de bit

bull Canal subjacente pode ldquocorromperrdquo valores dos bits num pacotebull Checksum para detectar erros de bits

bull A questatildeo como recuperar esses errosbull Reconhecimentos (ACKs) receptor avisa explicitamente aotransmissor que o pacote foi recebido corretamente

bull Reconhecimentos negativos (NAKs) receptor avisaexplicitamente ao transmissor que o pacote tem erros

bull Transmissor reenvia o pacote quando da recepccedilatildeo de um NAK

bull Novos mecanismos no rdt20 (aleacutem do rdt10)bull Detecccedilatildeo de errosbull Retorno do receptor mensagens de controle(ACK NAK) rcvr-gtsender

Transport Layer 3-25

rdt20 especificaccedilatildeo FSM

Transport Layer 3-26

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 operaccedilatildeo com ausecircncia de erros

Transport Layer 3-27

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 cenaacuterio de erro

Transport Layer 3-28

O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata

Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada

pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes

duplicados

Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do

receptor

rdt20 tem um problema fatal

Transport Layer 3-29

rdt21 transmissor trata ACKNAKsperdidos

rdt21 receptor trata ACKNAKsperdidos

Wait for 0 from below

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)

Wait for 1 from below

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)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

Transport Layer 3-31

Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados

bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1

Receptorbull Deve verificar se o pacote recebido eacute duplicado

bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor

rdt21 discussatildeo

Transport Layer 3-32

bull Mesma funcionalidade do rdt21 usando somente ACKs

bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido

bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente

rdt22 um protocolo sem NAK

Transport Layer 3-33

aguardachamada 0

de cima

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)

aguardaACK

0

fragmento FSMdo transmissor

aguarda

0 de baixo

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento FSMdo receptor

Λ

rdt22 fragmentos do transmissor e do receptor

Transport Layer 3-34

Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante

Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)

bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso

bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido

bull Exige um temporizador decrescente

rdt30 canais com erros e perdas

Transport Layer 3-35

Transmissor rdt30

Transport Layer 3-36

rdt30 em accedilatildeo

Transport Layer 3-37

rdt30 em accedilatildeo

Transport Layer 3-38

bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado

bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps

bull O protocolo de rede limita o uso dos recursos fiacutesicos

bull rdt30 funciona mas o desempenho eacute sofriacutevel

bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB

Desempenho do rdt30

Ttransmis

satildeo

= 8 kbpkt109 bs

= 8 microsegL (tamanho do pacote em bits)

R (taxa de transmissatildeo bps)=

Usender=008

30008 = 000027 L RRTT + L R

=

Transport Layer 3-39

rdt30 operaccedilatildeo pare e espere

Transmissatildeo do 1ordm Bit dopacote t = 0

emissor receptor

RTT

Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK

Recebe ACK envia proacuteximopacote t = RTT + L R

U sender

= 008

30008 = 000027

microsec

L R

RTT + L R =

Transport Layer 3-40

Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos

bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada

bull Armazenamento no transmissor eou no receptor

bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

Protocolos com paralelismo (pipelining)

Transport Layer 3-41

Pipelining aumento da utilizaccedilatildeo

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Chegada do primeiro bitChegada do uacuteltimo bit envia ACK

Chegada do ACK envia o proacuteximo pacote t = RTT + L R

U emissor

= 024

30008 = 00008

microsecon

3 L R

RTT + L R =

Aumenta a utilizaccedilatildeopor um fator de 3

Transport Layer 3-42

Protocolos do tipo Pipelining

Go-back-N visatildeo geral Emissor pode enviar ateacute N

pacotes natildeo reconhecidos(unacked) no pipeline

Receptor envia acksacumulativos

Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo

Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido

Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)

Retransmissatildeo seletiva visatildeogeral

Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)

Receptor reconhece (acks) pacotes individuais

Emissor manteacutemtemporizador para cadapacote natildeo reconhecido

Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido

Transport Layer 3-43

Transmissor

bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote

bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos

bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)

bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela

Go-Back-N

Transport Layer 3-44

GBN FSM estendida para o transmissor

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)

Λ

Λ

Transport Layer 3-45

bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum

bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem

GBN FSM estendida para o receptor

Wait

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(0ACKchksum)

Λ

udt_send(sndpkt)

default

Transport Layer 3-46

GBN em accedilatildeo

Transport Layer 3-47

bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior

bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido

bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos

Retransmissatildeo seletiva

Transport Layer 3-48

Retransmissatildeo seletiva janelas do transmissore do receptor

Transport Layer 3-49

TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de

sequumlecircncia disponiacutevel estaacute najanela envia o pacote

Timeout(n)bull Reenvia pacote n restart

timerACK (n) em

[sendbasesendbase+N]bull Marca pacote n como

recebidobull Se n eacute o menor pacote natildeo

reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido

Retransmissatildeo seletiva

RECEPTORPacote n em [rcvbase rcvbase +

N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem

entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido

pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora

Transport Layer 3-50

Retransmissatildeo seletiva em accedilatildeo

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-12

Demux orientado agrave conexatildeo(cont)

ClienteIPB

P1

clienteIP A

P1P2P4

servidorIP C

SP 9157

DP 80

SP 9157

DP 80

P5 P6 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Transport Layer 3-13

Connection-oriented demux Servidor Web com Threads

ClienteIPB

P1

clienteIP A

P1P2

servidorIP C

SP 9157

DP 80

SP 9157

DP 80

P4 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Transport Layer 3-14

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camada de Transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte semconexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevel de dados

35 Transporte orientado agraveconexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento da conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento no TCP

Transport Layer 3-15

UDP User Datagram Protocol [RFC 768]

Protocolo de transporteInternet ldquosem gordurasrdquo

Serviccedilo ldquomelhor esforccedilordquo os segmentos UDP podem

Ser perdidos

Ser entregues fora de ordem agrave aplicaccedilatildeo

Sem conexatildeo sem handshaking entre

o emissor UDP e o receptor UDP

cada segmento UDP eacutemanipuladoindependentemente dos outros

Porque existe o UDP Sem estabelecimento de

conexatildeo (a conexatildeo incluiatraso)

simples natildeo manteacutem o estado da conexatildeo no emissor e no receptor

Cabeccedilalho pequeno no segmento

Sem controle de congestionamento UDP pode enviar segmentos tatildeoraacutepido quanto desejado (e possiacutevel)

Transport Layer 3-16

Mais sobre o UDP

Geralmente utilizado emaplicaccedilotildees envolvendostreaming multimiacutedia

Tolerante a perdas Sensiacutevel agrave taxa

Uso de UDP DNS SNMP

Transferecircncia confiaacutevelsobre o UDP adicionarconfiabilidade no niacutevel daaplicaccedilatildeo

Recuperaccedilatildeo de erroespeciacutefica da aplicaccedilatildeo

da portade origem

32 bits

Dado da aplicaccedilatildeo(mensagem)

Formato do segmento UDP

tamanho checksumTamanho emBytes do

segmento UDPincluindo ocabeccedilalho

da portade destino

Transport Layer 3-17

Checksum UDP

Emissor Trata o conteuacutedo do

segmento como umasequecircncia de inteiros de 16 bits

checksum adiccedilatildeo (soma em complemento de 1)

o emissor coloca o valor do checksum no campo de checksum do UDP

Receptor Computa o checksum do

segmento recebido

Checa se o checksum computado eacute igual ao valor encontrado no campo checksum

NO ndash erro detectado

YES ndash nenhum errodectetado (entretantopode exister erro)

Objetivo detetar ldquoerrosrdquo no segmento transmitido

Transport Layer 3-18

Exemplo Internet Checksum Nota

Na adiccedilatildeo dos valores um carryout do bit maissignificativo deve ser adicionado ao resultado

Exemplo adiccedilatildeo de dois inteiros 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

wraparound

sumchecksum

Transport Layer 3-19

bull 31 Serviccedilos da camada de transporte

bull 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

bull 33 Transporte natildeo orientado agrave conexatildeo UDP

bull 34 Princiacutepios de transferecircncia confiaacutevel de dados

bull 35 Transporte orientado agrave conexatildeo TCPbull Estrutura do segmentobull Transferecircncia confiaacutevel de dadosbull Controle de fluxobull Gerenciamento de conexatildeo

bull 36 Princiacutepios de controle de congestionamento

bull 37 Controle de congestionamento do TCP

Camada de transporte

Transport Layer 3-20

bull Importante nas camadasde aplicaccedilatildeo transportee enlace

bull Top 10 na lista dos toacutepicos mais importantsde redes

bull Caracteriacutesticas dos canaisnatildeo confiaacuteveisdeterminaratildeo a complexidade dos protocolos confiaacuteveis de transferecircncia de dados (rdt)

Princiacutepios de transferecircncia confiaacutevel de dados

Transport Layer 3-21

ladotransmissor

ladoreceptor

rdt_send() chamada da camada superior (ex pela aplicaccedilatildeo) Passa dados paraentregar agrave camada superior receptora

udt_send() chamada pela entidadede transporte para transferir pacotes

para o receptor sobre o canal natildeoconfiaacutevel

rdt_rcv() chamada quando o pacote chegaao lado receptor do canal

deliver_data() chamada pelaentidade de transporte para

entregar dados agrave camada superior

Transferecircncia confiaacutevel o ponto de partida

Transport Layer 3-22

Etapas

bull Desenvolver incrementalmente o transmissor e o receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)

bull Considerar apenas transferecircncias de dados unidirecionaisbull a informaccedilatildeo de controle deve fluir em ambas as direccedilotildees

bull Usar maacutequinas de estados finitos (FSM) para especificar o protocolo transmissor e o receptor

estado1

estado2

evento causando transiccedilatildeo de estadosaccedilotildees tomadas na transiccedilatildeo de estado

estado quando neste ldquoestadordquoo proacuteximo estado fica

unicamente determinadopelo proacuteximo evento

eventoaccedilotildees

Transferecircncia confiaacutevel o ponto de partida

Transport Layer 3-23

bull Canal de transmissatildeoperfeitamente confiaacutevel

bull Natildeo haacute erros de bitsbull Natildeo haacute perdas de pacotes

bull FSMs separadas paratransmissor e receptor

bull Transmissor envia dados parao canal subjacente

bull Receptor lecirc os dados do canal subjacente

rdt10 Transfecircrencia confiaacutevel sobre canaisconfiaacuteveis

Transport Layer 3-24

rdt20 canal com erros de bit

bull Canal subjacente pode ldquocorromperrdquo valores dos bits num pacotebull Checksum para detectar erros de bits

bull A questatildeo como recuperar esses errosbull Reconhecimentos (ACKs) receptor avisa explicitamente aotransmissor que o pacote foi recebido corretamente

bull Reconhecimentos negativos (NAKs) receptor avisaexplicitamente ao transmissor que o pacote tem erros

bull Transmissor reenvia o pacote quando da recepccedilatildeo de um NAK

bull Novos mecanismos no rdt20 (aleacutem do rdt10)bull Detecccedilatildeo de errosbull Retorno do receptor mensagens de controle(ACK NAK) rcvr-gtsender

Transport Layer 3-25

rdt20 especificaccedilatildeo FSM

Transport Layer 3-26

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 operaccedilatildeo com ausecircncia de erros

Transport Layer 3-27

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 cenaacuterio de erro

Transport Layer 3-28

O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata

Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada

pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes

duplicados

Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do

receptor

rdt20 tem um problema fatal

Transport Layer 3-29

rdt21 transmissor trata ACKNAKsperdidos

rdt21 receptor trata ACKNAKsperdidos

Wait for 0 from below

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)

Wait for 1 from below

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)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

Transport Layer 3-31

Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados

bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1

Receptorbull Deve verificar se o pacote recebido eacute duplicado

bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor

rdt21 discussatildeo

Transport Layer 3-32

bull Mesma funcionalidade do rdt21 usando somente ACKs

bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido

bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente

rdt22 um protocolo sem NAK

Transport Layer 3-33

aguardachamada 0

de cima

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)

aguardaACK

0

fragmento FSMdo transmissor

aguarda

0 de baixo

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento FSMdo receptor

Λ

rdt22 fragmentos do transmissor e do receptor

Transport Layer 3-34

Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante

Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)

bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso

bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido

bull Exige um temporizador decrescente

rdt30 canais com erros e perdas

Transport Layer 3-35

Transmissor rdt30

Transport Layer 3-36

rdt30 em accedilatildeo

Transport Layer 3-37

rdt30 em accedilatildeo

Transport Layer 3-38

bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado

bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps

bull O protocolo de rede limita o uso dos recursos fiacutesicos

bull rdt30 funciona mas o desempenho eacute sofriacutevel

bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB

Desempenho do rdt30

Ttransmis

satildeo

= 8 kbpkt109 bs

= 8 microsegL (tamanho do pacote em bits)

R (taxa de transmissatildeo bps)=

Usender=008

30008 = 000027 L RRTT + L R

=

Transport Layer 3-39

rdt30 operaccedilatildeo pare e espere

Transmissatildeo do 1ordm Bit dopacote t = 0

emissor receptor

RTT

Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK

Recebe ACK envia proacuteximopacote t = RTT + L R

U sender

= 008

30008 = 000027

microsec

L R

RTT + L R =

Transport Layer 3-40

Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos

bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada

bull Armazenamento no transmissor eou no receptor

bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

Protocolos com paralelismo (pipelining)

Transport Layer 3-41

Pipelining aumento da utilizaccedilatildeo

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Chegada do primeiro bitChegada do uacuteltimo bit envia ACK

Chegada do ACK envia o proacuteximo pacote t = RTT + L R

U emissor

= 024

30008 = 00008

microsecon

3 L R

RTT + L R =

Aumenta a utilizaccedilatildeopor um fator de 3

Transport Layer 3-42

Protocolos do tipo Pipelining

Go-back-N visatildeo geral Emissor pode enviar ateacute N

pacotes natildeo reconhecidos(unacked) no pipeline

Receptor envia acksacumulativos

Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo

Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido

Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)

Retransmissatildeo seletiva visatildeogeral

Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)

Receptor reconhece (acks) pacotes individuais

Emissor manteacutemtemporizador para cadapacote natildeo reconhecido

Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido

Transport Layer 3-43

Transmissor

bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote

bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos

bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)

bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela

Go-Back-N

Transport Layer 3-44

GBN FSM estendida para o transmissor

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)

Λ

Λ

Transport Layer 3-45

bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum

bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem

GBN FSM estendida para o receptor

Wait

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(0ACKchksum)

Λ

udt_send(sndpkt)

default

Transport Layer 3-46

GBN em accedilatildeo

Transport Layer 3-47

bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior

bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido

bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos

Retransmissatildeo seletiva

Transport Layer 3-48

Retransmissatildeo seletiva janelas do transmissore do receptor

Transport Layer 3-49

TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de

sequumlecircncia disponiacutevel estaacute najanela envia o pacote

Timeout(n)bull Reenvia pacote n restart

timerACK (n) em

[sendbasesendbase+N]bull Marca pacote n como

recebidobull Se n eacute o menor pacote natildeo

reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido

Retransmissatildeo seletiva

RECEPTORPacote n em [rcvbase rcvbase +

N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem

entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido

pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora

Transport Layer 3-50

Retransmissatildeo seletiva em accedilatildeo

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-13

Connection-oriented demux Servidor Web com Threads

ClienteIPB

P1

clienteIP A

P1P2

servidorIP C

SP 9157

DP 80

SP 9157

DP 80

P4 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Transport Layer 3-14

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camada de Transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte semconexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevel de dados

35 Transporte orientado agraveconexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento da conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento no TCP

Transport Layer 3-15

UDP User Datagram Protocol [RFC 768]

Protocolo de transporteInternet ldquosem gordurasrdquo

Serviccedilo ldquomelhor esforccedilordquo os segmentos UDP podem

Ser perdidos

Ser entregues fora de ordem agrave aplicaccedilatildeo

Sem conexatildeo sem handshaking entre

o emissor UDP e o receptor UDP

cada segmento UDP eacutemanipuladoindependentemente dos outros

Porque existe o UDP Sem estabelecimento de

conexatildeo (a conexatildeo incluiatraso)

simples natildeo manteacutem o estado da conexatildeo no emissor e no receptor

Cabeccedilalho pequeno no segmento

Sem controle de congestionamento UDP pode enviar segmentos tatildeoraacutepido quanto desejado (e possiacutevel)

Transport Layer 3-16

Mais sobre o UDP

Geralmente utilizado emaplicaccedilotildees envolvendostreaming multimiacutedia

Tolerante a perdas Sensiacutevel agrave taxa

Uso de UDP DNS SNMP

Transferecircncia confiaacutevelsobre o UDP adicionarconfiabilidade no niacutevel daaplicaccedilatildeo

Recuperaccedilatildeo de erroespeciacutefica da aplicaccedilatildeo

da portade origem

32 bits

Dado da aplicaccedilatildeo(mensagem)

Formato do segmento UDP

tamanho checksumTamanho emBytes do

segmento UDPincluindo ocabeccedilalho

da portade destino

Transport Layer 3-17

Checksum UDP

Emissor Trata o conteuacutedo do

segmento como umasequecircncia de inteiros de 16 bits

checksum adiccedilatildeo (soma em complemento de 1)

o emissor coloca o valor do checksum no campo de checksum do UDP

Receptor Computa o checksum do

segmento recebido

Checa se o checksum computado eacute igual ao valor encontrado no campo checksum

NO ndash erro detectado

YES ndash nenhum errodectetado (entretantopode exister erro)

Objetivo detetar ldquoerrosrdquo no segmento transmitido

Transport Layer 3-18

Exemplo Internet Checksum Nota

Na adiccedilatildeo dos valores um carryout do bit maissignificativo deve ser adicionado ao resultado

Exemplo adiccedilatildeo de dois inteiros 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

wraparound

sumchecksum

Transport Layer 3-19

bull 31 Serviccedilos da camada de transporte

bull 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

bull 33 Transporte natildeo orientado agrave conexatildeo UDP

bull 34 Princiacutepios de transferecircncia confiaacutevel de dados

bull 35 Transporte orientado agrave conexatildeo TCPbull Estrutura do segmentobull Transferecircncia confiaacutevel de dadosbull Controle de fluxobull Gerenciamento de conexatildeo

bull 36 Princiacutepios de controle de congestionamento

bull 37 Controle de congestionamento do TCP

Camada de transporte

Transport Layer 3-20

bull Importante nas camadasde aplicaccedilatildeo transportee enlace

bull Top 10 na lista dos toacutepicos mais importantsde redes

bull Caracteriacutesticas dos canaisnatildeo confiaacuteveisdeterminaratildeo a complexidade dos protocolos confiaacuteveis de transferecircncia de dados (rdt)

Princiacutepios de transferecircncia confiaacutevel de dados

Transport Layer 3-21

ladotransmissor

ladoreceptor

rdt_send() chamada da camada superior (ex pela aplicaccedilatildeo) Passa dados paraentregar agrave camada superior receptora

udt_send() chamada pela entidadede transporte para transferir pacotes

para o receptor sobre o canal natildeoconfiaacutevel

rdt_rcv() chamada quando o pacote chegaao lado receptor do canal

deliver_data() chamada pelaentidade de transporte para

entregar dados agrave camada superior

Transferecircncia confiaacutevel o ponto de partida

Transport Layer 3-22

Etapas

bull Desenvolver incrementalmente o transmissor e o receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)

bull Considerar apenas transferecircncias de dados unidirecionaisbull a informaccedilatildeo de controle deve fluir em ambas as direccedilotildees

bull Usar maacutequinas de estados finitos (FSM) para especificar o protocolo transmissor e o receptor

estado1

estado2

evento causando transiccedilatildeo de estadosaccedilotildees tomadas na transiccedilatildeo de estado

estado quando neste ldquoestadordquoo proacuteximo estado fica

unicamente determinadopelo proacuteximo evento

eventoaccedilotildees

Transferecircncia confiaacutevel o ponto de partida

Transport Layer 3-23

bull Canal de transmissatildeoperfeitamente confiaacutevel

bull Natildeo haacute erros de bitsbull Natildeo haacute perdas de pacotes

bull FSMs separadas paratransmissor e receptor

bull Transmissor envia dados parao canal subjacente

bull Receptor lecirc os dados do canal subjacente

rdt10 Transfecircrencia confiaacutevel sobre canaisconfiaacuteveis

Transport Layer 3-24

rdt20 canal com erros de bit

bull Canal subjacente pode ldquocorromperrdquo valores dos bits num pacotebull Checksum para detectar erros de bits

bull A questatildeo como recuperar esses errosbull Reconhecimentos (ACKs) receptor avisa explicitamente aotransmissor que o pacote foi recebido corretamente

bull Reconhecimentos negativos (NAKs) receptor avisaexplicitamente ao transmissor que o pacote tem erros

bull Transmissor reenvia o pacote quando da recepccedilatildeo de um NAK

bull Novos mecanismos no rdt20 (aleacutem do rdt10)bull Detecccedilatildeo de errosbull Retorno do receptor mensagens de controle(ACK NAK) rcvr-gtsender

Transport Layer 3-25

rdt20 especificaccedilatildeo FSM

Transport Layer 3-26

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 operaccedilatildeo com ausecircncia de erros

Transport Layer 3-27

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 cenaacuterio de erro

Transport Layer 3-28

O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata

Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada

pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes

duplicados

Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do

receptor

rdt20 tem um problema fatal

Transport Layer 3-29

rdt21 transmissor trata ACKNAKsperdidos

rdt21 receptor trata ACKNAKsperdidos

Wait for 0 from below

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)

Wait for 1 from below

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)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

Transport Layer 3-31

Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados

bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1

Receptorbull Deve verificar se o pacote recebido eacute duplicado

bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor

rdt21 discussatildeo

Transport Layer 3-32

bull Mesma funcionalidade do rdt21 usando somente ACKs

bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido

bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente

rdt22 um protocolo sem NAK

Transport Layer 3-33

aguardachamada 0

de cima

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)

aguardaACK

0

fragmento FSMdo transmissor

aguarda

0 de baixo

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento FSMdo receptor

Λ

rdt22 fragmentos do transmissor e do receptor

Transport Layer 3-34

Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante

Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)

bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso

bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido

bull Exige um temporizador decrescente

rdt30 canais com erros e perdas

Transport Layer 3-35

Transmissor rdt30

Transport Layer 3-36

rdt30 em accedilatildeo

Transport Layer 3-37

rdt30 em accedilatildeo

Transport Layer 3-38

bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado

bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps

bull O protocolo de rede limita o uso dos recursos fiacutesicos

bull rdt30 funciona mas o desempenho eacute sofriacutevel

bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB

Desempenho do rdt30

Ttransmis

satildeo

= 8 kbpkt109 bs

= 8 microsegL (tamanho do pacote em bits)

R (taxa de transmissatildeo bps)=

Usender=008

30008 = 000027 L RRTT + L R

=

Transport Layer 3-39

rdt30 operaccedilatildeo pare e espere

Transmissatildeo do 1ordm Bit dopacote t = 0

emissor receptor

RTT

Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK

Recebe ACK envia proacuteximopacote t = RTT + L R

U sender

= 008

30008 = 000027

microsec

L R

RTT + L R =

Transport Layer 3-40

Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos

bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada

bull Armazenamento no transmissor eou no receptor

bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

Protocolos com paralelismo (pipelining)

Transport Layer 3-41

Pipelining aumento da utilizaccedilatildeo

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Chegada do primeiro bitChegada do uacuteltimo bit envia ACK

Chegada do ACK envia o proacuteximo pacote t = RTT + L R

U emissor

= 024

30008 = 00008

microsecon

3 L R

RTT + L R =

Aumenta a utilizaccedilatildeopor um fator de 3

Transport Layer 3-42

Protocolos do tipo Pipelining

Go-back-N visatildeo geral Emissor pode enviar ateacute N

pacotes natildeo reconhecidos(unacked) no pipeline

Receptor envia acksacumulativos

Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo

Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido

Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)

Retransmissatildeo seletiva visatildeogeral

Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)

Receptor reconhece (acks) pacotes individuais

Emissor manteacutemtemporizador para cadapacote natildeo reconhecido

Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido

Transport Layer 3-43

Transmissor

bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote

bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos

bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)

bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela

Go-Back-N

Transport Layer 3-44

GBN FSM estendida para o transmissor

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)

Λ

Λ

Transport Layer 3-45

bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum

bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem

GBN FSM estendida para o receptor

Wait

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(0ACKchksum)

Λ

udt_send(sndpkt)

default

Transport Layer 3-46

GBN em accedilatildeo

Transport Layer 3-47

bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior

bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido

bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos

Retransmissatildeo seletiva

Transport Layer 3-48

Retransmissatildeo seletiva janelas do transmissore do receptor

Transport Layer 3-49

TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de

sequumlecircncia disponiacutevel estaacute najanela envia o pacote

Timeout(n)bull Reenvia pacote n restart

timerACK (n) em

[sendbasesendbase+N]bull Marca pacote n como

recebidobull Se n eacute o menor pacote natildeo

reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido

Retransmissatildeo seletiva

RECEPTORPacote n em [rcvbase rcvbase +

N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem

entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido

pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora

Transport Layer 3-50

Retransmissatildeo seletiva em accedilatildeo

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-14

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camada de Transporte

32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

33 Transporte semconexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevel de dados

35 Transporte orientado agraveconexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento da conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento no TCP

Transport Layer 3-15

UDP User Datagram Protocol [RFC 768]

Protocolo de transporteInternet ldquosem gordurasrdquo

Serviccedilo ldquomelhor esforccedilordquo os segmentos UDP podem

Ser perdidos

Ser entregues fora de ordem agrave aplicaccedilatildeo

Sem conexatildeo sem handshaking entre

o emissor UDP e o receptor UDP

cada segmento UDP eacutemanipuladoindependentemente dos outros

Porque existe o UDP Sem estabelecimento de

conexatildeo (a conexatildeo incluiatraso)

simples natildeo manteacutem o estado da conexatildeo no emissor e no receptor

Cabeccedilalho pequeno no segmento

Sem controle de congestionamento UDP pode enviar segmentos tatildeoraacutepido quanto desejado (e possiacutevel)

Transport Layer 3-16

Mais sobre o UDP

Geralmente utilizado emaplicaccedilotildees envolvendostreaming multimiacutedia

Tolerante a perdas Sensiacutevel agrave taxa

Uso de UDP DNS SNMP

Transferecircncia confiaacutevelsobre o UDP adicionarconfiabilidade no niacutevel daaplicaccedilatildeo

Recuperaccedilatildeo de erroespeciacutefica da aplicaccedilatildeo

da portade origem

32 bits

Dado da aplicaccedilatildeo(mensagem)

Formato do segmento UDP

tamanho checksumTamanho emBytes do

segmento UDPincluindo ocabeccedilalho

da portade destino

Transport Layer 3-17

Checksum UDP

Emissor Trata o conteuacutedo do

segmento como umasequecircncia de inteiros de 16 bits

checksum adiccedilatildeo (soma em complemento de 1)

o emissor coloca o valor do checksum no campo de checksum do UDP

Receptor Computa o checksum do

segmento recebido

Checa se o checksum computado eacute igual ao valor encontrado no campo checksum

NO ndash erro detectado

YES ndash nenhum errodectetado (entretantopode exister erro)

Objetivo detetar ldquoerrosrdquo no segmento transmitido

Transport Layer 3-18

Exemplo Internet Checksum Nota

Na adiccedilatildeo dos valores um carryout do bit maissignificativo deve ser adicionado ao resultado

Exemplo adiccedilatildeo de dois inteiros 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

wraparound

sumchecksum

Transport Layer 3-19

bull 31 Serviccedilos da camada de transporte

bull 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

bull 33 Transporte natildeo orientado agrave conexatildeo UDP

bull 34 Princiacutepios de transferecircncia confiaacutevel de dados

bull 35 Transporte orientado agrave conexatildeo TCPbull Estrutura do segmentobull Transferecircncia confiaacutevel de dadosbull Controle de fluxobull Gerenciamento de conexatildeo

bull 36 Princiacutepios de controle de congestionamento

bull 37 Controle de congestionamento do TCP

Camada de transporte

Transport Layer 3-20

bull Importante nas camadasde aplicaccedilatildeo transportee enlace

bull Top 10 na lista dos toacutepicos mais importantsde redes

bull Caracteriacutesticas dos canaisnatildeo confiaacuteveisdeterminaratildeo a complexidade dos protocolos confiaacuteveis de transferecircncia de dados (rdt)

Princiacutepios de transferecircncia confiaacutevel de dados

Transport Layer 3-21

ladotransmissor

ladoreceptor

rdt_send() chamada da camada superior (ex pela aplicaccedilatildeo) Passa dados paraentregar agrave camada superior receptora

udt_send() chamada pela entidadede transporte para transferir pacotes

para o receptor sobre o canal natildeoconfiaacutevel

rdt_rcv() chamada quando o pacote chegaao lado receptor do canal

deliver_data() chamada pelaentidade de transporte para

entregar dados agrave camada superior

Transferecircncia confiaacutevel o ponto de partida

Transport Layer 3-22

Etapas

bull Desenvolver incrementalmente o transmissor e o receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)

bull Considerar apenas transferecircncias de dados unidirecionaisbull a informaccedilatildeo de controle deve fluir em ambas as direccedilotildees

bull Usar maacutequinas de estados finitos (FSM) para especificar o protocolo transmissor e o receptor

estado1

estado2

evento causando transiccedilatildeo de estadosaccedilotildees tomadas na transiccedilatildeo de estado

estado quando neste ldquoestadordquoo proacuteximo estado fica

unicamente determinadopelo proacuteximo evento

eventoaccedilotildees

Transferecircncia confiaacutevel o ponto de partida

Transport Layer 3-23

bull Canal de transmissatildeoperfeitamente confiaacutevel

bull Natildeo haacute erros de bitsbull Natildeo haacute perdas de pacotes

bull FSMs separadas paratransmissor e receptor

bull Transmissor envia dados parao canal subjacente

bull Receptor lecirc os dados do canal subjacente

rdt10 Transfecircrencia confiaacutevel sobre canaisconfiaacuteveis

Transport Layer 3-24

rdt20 canal com erros de bit

bull Canal subjacente pode ldquocorromperrdquo valores dos bits num pacotebull Checksum para detectar erros de bits

bull A questatildeo como recuperar esses errosbull Reconhecimentos (ACKs) receptor avisa explicitamente aotransmissor que o pacote foi recebido corretamente

bull Reconhecimentos negativos (NAKs) receptor avisaexplicitamente ao transmissor que o pacote tem erros

bull Transmissor reenvia o pacote quando da recepccedilatildeo de um NAK

bull Novos mecanismos no rdt20 (aleacutem do rdt10)bull Detecccedilatildeo de errosbull Retorno do receptor mensagens de controle(ACK NAK) rcvr-gtsender

Transport Layer 3-25

rdt20 especificaccedilatildeo FSM

Transport Layer 3-26

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 operaccedilatildeo com ausecircncia de erros

Transport Layer 3-27

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 cenaacuterio de erro

Transport Layer 3-28

O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata

Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada

pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes

duplicados

Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do

receptor

rdt20 tem um problema fatal

Transport Layer 3-29

rdt21 transmissor trata ACKNAKsperdidos

rdt21 receptor trata ACKNAKsperdidos

Wait for 0 from below

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)

Wait for 1 from below

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)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

Transport Layer 3-31

Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados

bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1

Receptorbull Deve verificar se o pacote recebido eacute duplicado

bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor

rdt21 discussatildeo

Transport Layer 3-32

bull Mesma funcionalidade do rdt21 usando somente ACKs

bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido

bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente

rdt22 um protocolo sem NAK

Transport Layer 3-33

aguardachamada 0

de cima

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)

aguardaACK

0

fragmento FSMdo transmissor

aguarda

0 de baixo

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento FSMdo receptor

Λ

rdt22 fragmentos do transmissor e do receptor

Transport Layer 3-34

Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante

Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)

bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso

bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido

bull Exige um temporizador decrescente

rdt30 canais com erros e perdas

Transport Layer 3-35

Transmissor rdt30

Transport Layer 3-36

rdt30 em accedilatildeo

Transport Layer 3-37

rdt30 em accedilatildeo

Transport Layer 3-38

bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado

bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps

bull O protocolo de rede limita o uso dos recursos fiacutesicos

bull rdt30 funciona mas o desempenho eacute sofriacutevel

bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB

Desempenho do rdt30

Ttransmis

satildeo

= 8 kbpkt109 bs

= 8 microsegL (tamanho do pacote em bits)

R (taxa de transmissatildeo bps)=

Usender=008

30008 = 000027 L RRTT + L R

=

Transport Layer 3-39

rdt30 operaccedilatildeo pare e espere

Transmissatildeo do 1ordm Bit dopacote t = 0

emissor receptor

RTT

Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK

Recebe ACK envia proacuteximopacote t = RTT + L R

U sender

= 008

30008 = 000027

microsec

L R

RTT + L R =

Transport Layer 3-40

Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos

bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada

bull Armazenamento no transmissor eou no receptor

bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

Protocolos com paralelismo (pipelining)

Transport Layer 3-41

Pipelining aumento da utilizaccedilatildeo

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Chegada do primeiro bitChegada do uacuteltimo bit envia ACK

Chegada do ACK envia o proacuteximo pacote t = RTT + L R

U emissor

= 024

30008 = 00008

microsecon

3 L R

RTT + L R =

Aumenta a utilizaccedilatildeopor um fator de 3

Transport Layer 3-42

Protocolos do tipo Pipelining

Go-back-N visatildeo geral Emissor pode enviar ateacute N

pacotes natildeo reconhecidos(unacked) no pipeline

Receptor envia acksacumulativos

Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo

Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido

Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)

Retransmissatildeo seletiva visatildeogeral

Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)

Receptor reconhece (acks) pacotes individuais

Emissor manteacutemtemporizador para cadapacote natildeo reconhecido

Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido

Transport Layer 3-43

Transmissor

bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote

bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos

bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)

bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela

Go-Back-N

Transport Layer 3-44

GBN FSM estendida para o transmissor

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)

Λ

Λ

Transport Layer 3-45

bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum

bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem

GBN FSM estendida para o receptor

Wait

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(0ACKchksum)

Λ

udt_send(sndpkt)

default

Transport Layer 3-46

GBN em accedilatildeo

Transport Layer 3-47

bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior

bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido

bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos

Retransmissatildeo seletiva

Transport Layer 3-48

Retransmissatildeo seletiva janelas do transmissore do receptor

Transport Layer 3-49

TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de

sequumlecircncia disponiacutevel estaacute najanela envia o pacote

Timeout(n)bull Reenvia pacote n restart

timerACK (n) em

[sendbasesendbase+N]bull Marca pacote n como

recebidobull Se n eacute o menor pacote natildeo

reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido

Retransmissatildeo seletiva

RECEPTORPacote n em [rcvbase rcvbase +

N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem

entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido

pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora

Transport Layer 3-50

Retransmissatildeo seletiva em accedilatildeo

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-15

UDP User Datagram Protocol [RFC 768]

Protocolo de transporteInternet ldquosem gordurasrdquo

Serviccedilo ldquomelhor esforccedilordquo os segmentos UDP podem

Ser perdidos

Ser entregues fora de ordem agrave aplicaccedilatildeo

Sem conexatildeo sem handshaking entre

o emissor UDP e o receptor UDP

cada segmento UDP eacutemanipuladoindependentemente dos outros

Porque existe o UDP Sem estabelecimento de

conexatildeo (a conexatildeo incluiatraso)

simples natildeo manteacutem o estado da conexatildeo no emissor e no receptor

Cabeccedilalho pequeno no segmento

Sem controle de congestionamento UDP pode enviar segmentos tatildeoraacutepido quanto desejado (e possiacutevel)

Transport Layer 3-16

Mais sobre o UDP

Geralmente utilizado emaplicaccedilotildees envolvendostreaming multimiacutedia

Tolerante a perdas Sensiacutevel agrave taxa

Uso de UDP DNS SNMP

Transferecircncia confiaacutevelsobre o UDP adicionarconfiabilidade no niacutevel daaplicaccedilatildeo

Recuperaccedilatildeo de erroespeciacutefica da aplicaccedilatildeo

da portade origem

32 bits

Dado da aplicaccedilatildeo(mensagem)

Formato do segmento UDP

tamanho checksumTamanho emBytes do

segmento UDPincluindo ocabeccedilalho

da portade destino

Transport Layer 3-17

Checksum UDP

Emissor Trata o conteuacutedo do

segmento como umasequecircncia de inteiros de 16 bits

checksum adiccedilatildeo (soma em complemento de 1)

o emissor coloca o valor do checksum no campo de checksum do UDP

Receptor Computa o checksum do

segmento recebido

Checa se o checksum computado eacute igual ao valor encontrado no campo checksum

NO ndash erro detectado

YES ndash nenhum errodectetado (entretantopode exister erro)

Objetivo detetar ldquoerrosrdquo no segmento transmitido

Transport Layer 3-18

Exemplo Internet Checksum Nota

Na adiccedilatildeo dos valores um carryout do bit maissignificativo deve ser adicionado ao resultado

Exemplo adiccedilatildeo de dois inteiros 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

wraparound

sumchecksum

Transport Layer 3-19

bull 31 Serviccedilos da camada de transporte

bull 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

bull 33 Transporte natildeo orientado agrave conexatildeo UDP

bull 34 Princiacutepios de transferecircncia confiaacutevel de dados

bull 35 Transporte orientado agrave conexatildeo TCPbull Estrutura do segmentobull Transferecircncia confiaacutevel de dadosbull Controle de fluxobull Gerenciamento de conexatildeo

bull 36 Princiacutepios de controle de congestionamento

bull 37 Controle de congestionamento do TCP

Camada de transporte

Transport Layer 3-20

bull Importante nas camadasde aplicaccedilatildeo transportee enlace

bull Top 10 na lista dos toacutepicos mais importantsde redes

bull Caracteriacutesticas dos canaisnatildeo confiaacuteveisdeterminaratildeo a complexidade dos protocolos confiaacuteveis de transferecircncia de dados (rdt)

Princiacutepios de transferecircncia confiaacutevel de dados

Transport Layer 3-21

ladotransmissor

ladoreceptor

rdt_send() chamada da camada superior (ex pela aplicaccedilatildeo) Passa dados paraentregar agrave camada superior receptora

udt_send() chamada pela entidadede transporte para transferir pacotes

para o receptor sobre o canal natildeoconfiaacutevel

rdt_rcv() chamada quando o pacote chegaao lado receptor do canal

deliver_data() chamada pelaentidade de transporte para

entregar dados agrave camada superior

Transferecircncia confiaacutevel o ponto de partida

Transport Layer 3-22

Etapas

bull Desenvolver incrementalmente o transmissor e o receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)

bull Considerar apenas transferecircncias de dados unidirecionaisbull a informaccedilatildeo de controle deve fluir em ambas as direccedilotildees

bull Usar maacutequinas de estados finitos (FSM) para especificar o protocolo transmissor e o receptor

estado1

estado2

evento causando transiccedilatildeo de estadosaccedilotildees tomadas na transiccedilatildeo de estado

estado quando neste ldquoestadordquoo proacuteximo estado fica

unicamente determinadopelo proacuteximo evento

eventoaccedilotildees

Transferecircncia confiaacutevel o ponto de partida

Transport Layer 3-23

bull Canal de transmissatildeoperfeitamente confiaacutevel

bull Natildeo haacute erros de bitsbull Natildeo haacute perdas de pacotes

bull FSMs separadas paratransmissor e receptor

bull Transmissor envia dados parao canal subjacente

bull Receptor lecirc os dados do canal subjacente

rdt10 Transfecircrencia confiaacutevel sobre canaisconfiaacuteveis

Transport Layer 3-24

rdt20 canal com erros de bit

bull Canal subjacente pode ldquocorromperrdquo valores dos bits num pacotebull Checksum para detectar erros de bits

bull A questatildeo como recuperar esses errosbull Reconhecimentos (ACKs) receptor avisa explicitamente aotransmissor que o pacote foi recebido corretamente

bull Reconhecimentos negativos (NAKs) receptor avisaexplicitamente ao transmissor que o pacote tem erros

bull Transmissor reenvia o pacote quando da recepccedilatildeo de um NAK

bull Novos mecanismos no rdt20 (aleacutem do rdt10)bull Detecccedilatildeo de errosbull Retorno do receptor mensagens de controle(ACK NAK) rcvr-gtsender

Transport Layer 3-25

rdt20 especificaccedilatildeo FSM

Transport Layer 3-26

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 operaccedilatildeo com ausecircncia de erros

Transport Layer 3-27

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 cenaacuterio de erro

Transport Layer 3-28

O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata

Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada

pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes

duplicados

Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do

receptor

rdt20 tem um problema fatal

Transport Layer 3-29

rdt21 transmissor trata ACKNAKsperdidos

rdt21 receptor trata ACKNAKsperdidos

Wait for 0 from below

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)

Wait for 1 from below

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)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

Transport Layer 3-31

Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados

bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1

Receptorbull Deve verificar se o pacote recebido eacute duplicado

bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor

rdt21 discussatildeo

Transport Layer 3-32

bull Mesma funcionalidade do rdt21 usando somente ACKs

bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido

bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente

rdt22 um protocolo sem NAK

Transport Layer 3-33

aguardachamada 0

de cima

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)

aguardaACK

0

fragmento FSMdo transmissor

aguarda

0 de baixo

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento FSMdo receptor

Λ

rdt22 fragmentos do transmissor e do receptor

Transport Layer 3-34

Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante

Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)

bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso

bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido

bull Exige um temporizador decrescente

rdt30 canais com erros e perdas

Transport Layer 3-35

Transmissor rdt30

Transport Layer 3-36

rdt30 em accedilatildeo

Transport Layer 3-37

rdt30 em accedilatildeo

Transport Layer 3-38

bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado

bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps

bull O protocolo de rede limita o uso dos recursos fiacutesicos

bull rdt30 funciona mas o desempenho eacute sofriacutevel

bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB

Desempenho do rdt30

Ttransmis

satildeo

= 8 kbpkt109 bs

= 8 microsegL (tamanho do pacote em bits)

R (taxa de transmissatildeo bps)=

Usender=008

30008 = 000027 L RRTT + L R

=

Transport Layer 3-39

rdt30 operaccedilatildeo pare e espere

Transmissatildeo do 1ordm Bit dopacote t = 0

emissor receptor

RTT

Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK

Recebe ACK envia proacuteximopacote t = RTT + L R

U sender

= 008

30008 = 000027

microsec

L R

RTT + L R =

Transport Layer 3-40

Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos

bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada

bull Armazenamento no transmissor eou no receptor

bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

Protocolos com paralelismo (pipelining)

Transport Layer 3-41

Pipelining aumento da utilizaccedilatildeo

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Chegada do primeiro bitChegada do uacuteltimo bit envia ACK

Chegada do ACK envia o proacuteximo pacote t = RTT + L R

U emissor

= 024

30008 = 00008

microsecon

3 L R

RTT + L R =

Aumenta a utilizaccedilatildeopor um fator de 3

Transport Layer 3-42

Protocolos do tipo Pipelining

Go-back-N visatildeo geral Emissor pode enviar ateacute N

pacotes natildeo reconhecidos(unacked) no pipeline

Receptor envia acksacumulativos

Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo

Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido

Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)

Retransmissatildeo seletiva visatildeogeral

Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)

Receptor reconhece (acks) pacotes individuais

Emissor manteacutemtemporizador para cadapacote natildeo reconhecido

Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido

Transport Layer 3-43

Transmissor

bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote

bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos

bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)

bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela

Go-Back-N

Transport Layer 3-44

GBN FSM estendida para o transmissor

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)

Λ

Λ

Transport Layer 3-45

bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum

bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem

GBN FSM estendida para o receptor

Wait

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(0ACKchksum)

Λ

udt_send(sndpkt)

default

Transport Layer 3-46

GBN em accedilatildeo

Transport Layer 3-47

bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior

bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido

bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos

Retransmissatildeo seletiva

Transport Layer 3-48

Retransmissatildeo seletiva janelas do transmissore do receptor

Transport Layer 3-49

TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de

sequumlecircncia disponiacutevel estaacute najanela envia o pacote

Timeout(n)bull Reenvia pacote n restart

timerACK (n) em

[sendbasesendbase+N]bull Marca pacote n como

recebidobull Se n eacute o menor pacote natildeo

reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido

Retransmissatildeo seletiva

RECEPTORPacote n em [rcvbase rcvbase +

N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem

entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido

pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora

Transport Layer 3-50

Retransmissatildeo seletiva em accedilatildeo

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-16

Mais sobre o UDP

Geralmente utilizado emaplicaccedilotildees envolvendostreaming multimiacutedia

Tolerante a perdas Sensiacutevel agrave taxa

Uso de UDP DNS SNMP

Transferecircncia confiaacutevelsobre o UDP adicionarconfiabilidade no niacutevel daaplicaccedilatildeo

Recuperaccedilatildeo de erroespeciacutefica da aplicaccedilatildeo

da portade origem

32 bits

Dado da aplicaccedilatildeo(mensagem)

Formato do segmento UDP

tamanho checksumTamanho emBytes do

segmento UDPincluindo ocabeccedilalho

da portade destino

Transport Layer 3-17

Checksum UDP

Emissor Trata o conteuacutedo do

segmento como umasequecircncia de inteiros de 16 bits

checksum adiccedilatildeo (soma em complemento de 1)

o emissor coloca o valor do checksum no campo de checksum do UDP

Receptor Computa o checksum do

segmento recebido

Checa se o checksum computado eacute igual ao valor encontrado no campo checksum

NO ndash erro detectado

YES ndash nenhum errodectetado (entretantopode exister erro)

Objetivo detetar ldquoerrosrdquo no segmento transmitido

Transport Layer 3-18

Exemplo Internet Checksum Nota

Na adiccedilatildeo dos valores um carryout do bit maissignificativo deve ser adicionado ao resultado

Exemplo adiccedilatildeo de dois inteiros 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

wraparound

sumchecksum

Transport Layer 3-19

bull 31 Serviccedilos da camada de transporte

bull 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

bull 33 Transporte natildeo orientado agrave conexatildeo UDP

bull 34 Princiacutepios de transferecircncia confiaacutevel de dados

bull 35 Transporte orientado agrave conexatildeo TCPbull Estrutura do segmentobull Transferecircncia confiaacutevel de dadosbull Controle de fluxobull Gerenciamento de conexatildeo

bull 36 Princiacutepios de controle de congestionamento

bull 37 Controle de congestionamento do TCP

Camada de transporte

Transport Layer 3-20

bull Importante nas camadasde aplicaccedilatildeo transportee enlace

bull Top 10 na lista dos toacutepicos mais importantsde redes

bull Caracteriacutesticas dos canaisnatildeo confiaacuteveisdeterminaratildeo a complexidade dos protocolos confiaacuteveis de transferecircncia de dados (rdt)

Princiacutepios de transferecircncia confiaacutevel de dados

Transport Layer 3-21

ladotransmissor

ladoreceptor

rdt_send() chamada da camada superior (ex pela aplicaccedilatildeo) Passa dados paraentregar agrave camada superior receptora

udt_send() chamada pela entidadede transporte para transferir pacotes

para o receptor sobre o canal natildeoconfiaacutevel

rdt_rcv() chamada quando o pacote chegaao lado receptor do canal

deliver_data() chamada pelaentidade de transporte para

entregar dados agrave camada superior

Transferecircncia confiaacutevel o ponto de partida

Transport Layer 3-22

Etapas

bull Desenvolver incrementalmente o transmissor e o receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)

bull Considerar apenas transferecircncias de dados unidirecionaisbull a informaccedilatildeo de controle deve fluir em ambas as direccedilotildees

bull Usar maacutequinas de estados finitos (FSM) para especificar o protocolo transmissor e o receptor

estado1

estado2

evento causando transiccedilatildeo de estadosaccedilotildees tomadas na transiccedilatildeo de estado

estado quando neste ldquoestadordquoo proacuteximo estado fica

unicamente determinadopelo proacuteximo evento

eventoaccedilotildees

Transferecircncia confiaacutevel o ponto de partida

Transport Layer 3-23

bull Canal de transmissatildeoperfeitamente confiaacutevel

bull Natildeo haacute erros de bitsbull Natildeo haacute perdas de pacotes

bull FSMs separadas paratransmissor e receptor

bull Transmissor envia dados parao canal subjacente

bull Receptor lecirc os dados do canal subjacente

rdt10 Transfecircrencia confiaacutevel sobre canaisconfiaacuteveis

Transport Layer 3-24

rdt20 canal com erros de bit

bull Canal subjacente pode ldquocorromperrdquo valores dos bits num pacotebull Checksum para detectar erros de bits

bull A questatildeo como recuperar esses errosbull Reconhecimentos (ACKs) receptor avisa explicitamente aotransmissor que o pacote foi recebido corretamente

bull Reconhecimentos negativos (NAKs) receptor avisaexplicitamente ao transmissor que o pacote tem erros

bull Transmissor reenvia o pacote quando da recepccedilatildeo de um NAK

bull Novos mecanismos no rdt20 (aleacutem do rdt10)bull Detecccedilatildeo de errosbull Retorno do receptor mensagens de controle(ACK NAK) rcvr-gtsender

Transport Layer 3-25

rdt20 especificaccedilatildeo FSM

Transport Layer 3-26

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 operaccedilatildeo com ausecircncia de erros

Transport Layer 3-27

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 cenaacuterio de erro

Transport Layer 3-28

O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata

Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada

pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes

duplicados

Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do

receptor

rdt20 tem um problema fatal

Transport Layer 3-29

rdt21 transmissor trata ACKNAKsperdidos

rdt21 receptor trata ACKNAKsperdidos

Wait for 0 from below

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)

Wait for 1 from below

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)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

Transport Layer 3-31

Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados

bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1

Receptorbull Deve verificar se o pacote recebido eacute duplicado

bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor

rdt21 discussatildeo

Transport Layer 3-32

bull Mesma funcionalidade do rdt21 usando somente ACKs

bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido

bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente

rdt22 um protocolo sem NAK

Transport Layer 3-33

aguardachamada 0

de cima

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)

aguardaACK

0

fragmento FSMdo transmissor

aguarda

0 de baixo

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento FSMdo receptor

Λ

rdt22 fragmentos do transmissor e do receptor

Transport Layer 3-34

Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante

Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)

bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso

bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido

bull Exige um temporizador decrescente

rdt30 canais com erros e perdas

Transport Layer 3-35

Transmissor rdt30

Transport Layer 3-36

rdt30 em accedilatildeo

Transport Layer 3-37

rdt30 em accedilatildeo

Transport Layer 3-38

bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado

bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps

bull O protocolo de rede limita o uso dos recursos fiacutesicos

bull rdt30 funciona mas o desempenho eacute sofriacutevel

bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB

Desempenho do rdt30

Ttransmis

satildeo

= 8 kbpkt109 bs

= 8 microsegL (tamanho do pacote em bits)

R (taxa de transmissatildeo bps)=

Usender=008

30008 = 000027 L RRTT + L R

=

Transport Layer 3-39

rdt30 operaccedilatildeo pare e espere

Transmissatildeo do 1ordm Bit dopacote t = 0

emissor receptor

RTT

Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK

Recebe ACK envia proacuteximopacote t = RTT + L R

U sender

= 008

30008 = 000027

microsec

L R

RTT + L R =

Transport Layer 3-40

Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos

bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada

bull Armazenamento no transmissor eou no receptor

bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

Protocolos com paralelismo (pipelining)

Transport Layer 3-41

Pipelining aumento da utilizaccedilatildeo

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Chegada do primeiro bitChegada do uacuteltimo bit envia ACK

Chegada do ACK envia o proacuteximo pacote t = RTT + L R

U emissor

= 024

30008 = 00008

microsecon

3 L R

RTT + L R =

Aumenta a utilizaccedilatildeopor um fator de 3

Transport Layer 3-42

Protocolos do tipo Pipelining

Go-back-N visatildeo geral Emissor pode enviar ateacute N

pacotes natildeo reconhecidos(unacked) no pipeline

Receptor envia acksacumulativos

Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo

Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido

Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)

Retransmissatildeo seletiva visatildeogeral

Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)

Receptor reconhece (acks) pacotes individuais

Emissor manteacutemtemporizador para cadapacote natildeo reconhecido

Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido

Transport Layer 3-43

Transmissor

bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote

bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos

bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)

bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela

Go-Back-N

Transport Layer 3-44

GBN FSM estendida para o transmissor

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)

Λ

Λ

Transport Layer 3-45

bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum

bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem

GBN FSM estendida para o receptor

Wait

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(0ACKchksum)

Λ

udt_send(sndpkt)

default

Transport Layer 3-46

GBN em accedilatildeo

Transport Layer 3-47

bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior

bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido

bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos

Retransmissatildeo seletiva

Transport Layer 3-48

Retransmissatildeo seletiva janelas do transmissore do receptor

Transport Layer 3-49

TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de

sequumlecircncia disponiacutevel estaacute najanela envia o pacote

Timeout(n)bull Reenvia pacote n restart

timerACK (n) em

[sendbasesendbase+N]bull Marca pacote n como

recebidobull Se n eacute o menor pacote natildeo

reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido

Retransmissatildeo seletiva

RECEPTORPacote n em [rcvbase rcvbase +

N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem

entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido

pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora

Transport Layer 3-50

Retransmissatildeo seletiva em accedilatildeo

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-17

Checksum UDP

Emissor Trata o conteuacutedo do

segmento como umasequecircncia de inteiros de 16 bits

checksum adiccedilatildeo (soma em complemento de 1)

o emissor coloca o valor do checksum no campo de checksum do UDP

Receptor Computa o checksum do

segmento recebido

Checa se o checksum computado eacute igual ao valor encontrado no campo checksum

NO ndash erro detectado

YES ndash nenhum errodectetado (entretantopode exister erro)

Objetivo detetar ldquoerrosrdquo no segmento transmitido

Transport Layer 3-18

Exemplo Internet Checksum Nota

Na adiccedilatildeo dos valores um carryout do bit maissignificativo deve ser adicionado ao resultado

Exemplo adiccedilatildeo de dois inteiros 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

wraparound

sumchecksum

Transport Layer 3-19

bull 31 Serviccedilos da camada de transporte

bull 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

bull 33 Transporte natildeo orientado agrave conexatildeo UDP

bull 34 Princiacutepios de transferecircncia confiaacutevel de dados

bull 35 Transporte orientado agrave conexatildeo TCPbull Estrutura do segmentobull Transferecircncia confiaacutevel de dadosbull Controle de fluxobull Gerenciamento de conexatildeo

bull 36 Princiacutepios de controle de congestionamento

bull 37 Controle de congestionamento do TCP

Camada de transporte

Transport Layer 3-20

bull Importante nas camadasde aplicaccedilatildeo transportee enlace

bull Top 10 na lista dos toacutepicos mais importantsde redes

bull Caracteriacutesticas dos canaisnatildeo confiaacuteveisdeterminaratildeo a complexidade dos protocolos confiaacuteveis de transferecircncia de dados (rdt)

Princiacutepios de transferecircncia confiaacutevel de dados

Transport Layer 3-21

ladotransmissor

ladoreceptor

rdt_send() chamada da camada superior (ex pela aplicaccedilatildeo) Passa dados paraentregar agrave camada superior receptora

udt_send() chamada pela entidadede transporte para transferir pacotes

para o receptor sobre o canal natildeoconfiaacutevel

rdt_rcv() chamada quando o pacote chegaao lado receptor do canal

deliver_data() chamada pelaentidade de transporte para

entregar dados agrave camada superior

Transferecircncia confiaacutevel o ponto de partida

Transport Layer 3-22

Etapas

bull Desenvolver incrementalmente o transmissor e o receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)

bull Considerar apenas transferecircncias de dados unidirecionaisbull a informaccedilatildeo de controle deve fluir em ambas as direccedilotildees

bull Usar maacutequinas de estados finitos (FSM) para especificar o protocolo transmissor e o receptor

estado1

estado2

evento causando transiccedilatildeo de estadosaccedilotildees tomadas na transiccedilatildeo de estado

estado quando neste ldquoestadordquoo proacuteximo estado fica

unicamente determinadopelo proacuteximo evento

eventoaccedilotildees

Transferecircncia confiaacutevel o ponto de partida

Transport Layer 3-23

bull Canal de transmissatildeoperfeitamente confiaacutevel

bull Natildeo haacute erros de bitsbull Natildeo haacute perdas de pacotes

bull FSMs separadas paratransmissor e receptor

bull Transmissor envia dados parao canal subjacente

bull Receptor lecirc os dados do canal subjacente

rdt10 Transfecircrencia confiaacutevel sobre canaisconfiaacuteveis

Transport Layer 3-24

rdt20 canal com erros de bit

bull Canal subjacente pode ldquocorromperrdquo valores dos bits num pacotebull Checksum para detectar erros de bits

bull A questatildeo como recuperar esses errosbull Reconhecimentos (ACKs) receptor avisa explicitamente aotransmissor que o pacote foi recebido corretamente

bull Reconhecimentos negativos (NAKs) receptor avisaexplicitamente ao transmissor que o pacote tem erros

bull Transmissor reenvia o pacote quando da recepccedilatildeo de um NAK

bull Novos mecanismos no rdt20 (aleacutem do rdt10)bull Detecccedilatildeo de errosbull Retorno do receptor mensagens de controle(ACK NAK) rcvr-gtsender

Transport Layer 3-25

rdt20 especificaccedilatildeo FSM

Transport Layer 3-26

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 operaccedilatildeo com ausecircncia de erros

Transport Layer 3-27

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 cenaacuterio de erro

Transport Layer 3-28

O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata

Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada

pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes

duplicados

Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do

receptor

rdt20 tem um problema fatal

Transport Layer 3-29

rdt21 transmissor trata ACKNAKsperdidos

rdt21 receptor trata ACKNAKsperdidos

Wait for 0 from below

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)

Wait for 1 from below

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)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

Transport Layer 3-31

Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados

bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1

Receptorbull Deve verificar se o pacote recebido eacute duplicado

bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor

rdt21 discussatildeo

Transport Layer 3-32

bull Mesma funcionalidade do rdt21 usando somente ACKs

bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido

bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente

rdt22 um protocolo sem NAK

Transport Layer 3-33

aguardachamada 0

de cima

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)

aguardaACK

0

fragmento FSMdo transmissor

aguarda

0 de baixo

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento FSMdo receptor

Λ

rdt22 fragmentos do transmissor e do receptor

Transport Layer 3-34

Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante

Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)

bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso

bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido

bull Exige um temporizador decrescente

rdt30 canais com erros e perdas

Transport Layer 3-35

Transmissor rdt30

Transport Layer 3-36

rdt30 em accedilatildeo

Transport Layer 3-37

rdt30 em accedilatildeo

Transport Layer 3-38

bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado

bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps

bull O protocolo de rede limita o uso dos recursos fiacutesicos

bull rdt30 funciona mas o desempenho eacute sofriacutevel

bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB

Desempenho do rdt30

Ttransmis

satildeo

= 8 kbpkt109 bs

= 8 microsegL (tamanho do pacote em bits)

R (taxa de transmissatildeo bps)=

Usender=008

30008 = 000027 L RRTT + L R

=

Transport Layer 3-39

rdt30 operaccedilatildeo pare e espere

Transmissatildeo do 1ordm Bit dopacote t = 0

emissor receptor

RTT

Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK

Recebe ACK envia proacuteximopacote t = RTT + L R

U sender

= 008

30008 = 000027

microsec

L R

RTT + L R =

Transport Layer 3-40

Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos

bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada

bull Armazenamento no transmissor eou no receptor

bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

Protocolos com paralelismo (pipelining)

Transport Layer 3-41

Pipelining aumento da utilizaccedilatildeo

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Chegada do primeiro bitChegada do uacuteltimo bit envia ACK

Chegada do ACK envia o proacuteximo pacote t = RTT + L R

U emissor

= 024

30008 = 00008

microsecon

3 L R

RTT + L R =

Aumenta a utilizaccedilatildeopor um fator de 3

Transport Layer 3-42

Protocolos do tipo Pipelining

Go-back-N visatildeo geral Emissor pode enviar ateacute N

pacotes natildeo reconhecidos(unacked) no pipeline

Receptor envia acksacumulativos

Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo

Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido

Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)

Retransmissatildeo seletiva visatildeogeral

Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)

Receptor reconhece (acks) pacotes individuais

Emissor manteacutemtemporizador para cadapacote natildeo reconhecido

Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido

Transport Layer 3-43

Transmissor

bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote

bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos

bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)

bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela

Go-Back-N

Transport Layer 3-44

GBN FSM estendida para o transmissor

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)

Λ

Λ

Transport Layer 3-45

bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum

bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem

GBN FSM estendida para o receptor

Wait

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(0ACKchksum)

Λ

udt_send(sndpkt)

default

Transport Layer 3-46

GBN em accedilatildeo

Transport Layer 3-47

bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior

bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido

bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos

Retransmissatildeo seletiva

Transport Layer 3-48

Retransmissatildeo seletiva janelas do transmissore do receptor

Transport Layer 3-49

TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de

sequumlecircncia disponiacutevel estaacute najanela envia o pacote

Timeout(n)bull Reenvia pacote n restart

timerACK (n) em

[sendbasesendbase+N]bull Marca pacote n como

recebidobull Se n eacute o menor pacote natildeo

reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido

Retransmissatildeo seletiva

RECEPTORPacote n em [rcvbase rcvbase +

N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem

entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido

pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora

Transport Layer 3-50

Retransmissatildeo seletiva em accedilatildeo

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-18

Exemplo Internet Checksum Nota

Na adiccedilatildeo dos valores um carryout do bit maissignificativo deve ser adicionado ao resultado

Exemplo adiccedilatildeo de dois inteiros 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

wraparound

sumchecksum

Transport Layer 3-19

bull 31 Serviccedilos da camada de transporte

bull 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

bull 33 Transporte natildeo orientado agrave conexatildeo UDP

bull 34 Princiacutepios de transferecircncia confiaacutevel de dados

bull 35 Transporte orientado agrave conexatildeo TCPbull Estrutura do segmentobull Transferecircncia confiaacutevel de dadosbull Controle de fluxobull Gerenciamento de conexatildeo

bull 36 Princiacutepios de controle de congestionamento

bull 37 Controle de congestionamento do TCP

Camada de transporte

Transport Layer 3-20

bull Importante nas camadasde aplicaccedilatildeo transportee enlace

bull Top 10 na lista dos toacutepicos mais importantsde redes

bull Caracteriacutesticas dos canaisnatildeo confiaacuteveisdeterminaratildeo a complexidade dos protocolos confiaacuteveis de transferecircncia de dados (rdt)

Princiacutepios de transferecircncia confiaacutevel de dados

Transport Layer 3-21

ladotransmissor

ladoreceptor

rdt_send() chamada da camada superior (ex pela aplicaccedilatildeo) Passa dados paraentregar agrave camada superior receptora

udt_send() chamada pela entidadede transporte para transferir pacotes

para o receptor sobre o canal natildeoconfiaacutevel

rdt_rcv() chamada quando o pacote chegaao lado receptor do canal

deliver_data() chamada pelaentidade de transporte para

entregar dados agrave camada superior

Transferecircncia confiaacutevel o ponto de partida

Transport Layer 3-22

Etapas

bull Desenvolver incrementalmente o transmissor e o receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)

bull Considerar apenas transferecircncias de dados unidirecionaisbull a informaccedilatildeo de controle deve fluir em ambas as direccedilotildees

bull Usar maacutequinas de estados finitos (FSM) para especificar o protocolo transmissor e o receptor

estado1

estado2

evento causando transiccedilatildeo de estadosaccedilotildees tomadas na transiccedilatildeo de estado

estado quando neste ldquoestadordquoo proacuteximo estado fica

unicamente determinadopelo proacuteximo evento

eventoaccedilotildees

Transferecircncia confiaacutevel o ponto de partida

Transport Layer 3-23

bull Canal de transmissatildeoperfeitamente confiaacutevel

bull Natildeo haacute erros de bitsbull Natildeo haacute perdas de pacotes

bull FSMs separadas paratransmissor e receptor

bull Transmissor envia dados parao canal subjacente

bull Receptor lecirc os dados do canal subjacente

rdt10 Transfecircrencia confiaacutevel sobre canaisconfiaacuteveis

Transport Layer 3-24

rdt20 canal com erros de bit

bull Canal subjacente pode ldquocorromperrdquo valores dos bits num pacotebull Checksum para detectar erros de bits

bull A questatildeo como recuperar esses errosbull Reconhecimentos (ACKs) receptor avisa explicitamente aotransmissor que o pacote foi recebido corretamente

bull Reconhecimentos negativos (NAKs) receptor avisaexplicitamente ao transmissor que o pacote tem erros

bull Transmissor reenvia o pacote quando da recepccedilatildeo de um NAK

bull Novos mecanismos no rdt20 (aleacutem do rdt10)bull Detecccedilatildeo de errosbull Retorno do receptor mensagens de controle(ACK NAK) rcvr-gtsender

Transport Layer 3-25

rdt20 especificaccedilatildeo FSM

Transport Layer 3-26

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 operaccedilatildeo com ausecircncia de erros

Transport Layer 3-27

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 cenaacuterio de erro

Transport Layer 3-28

O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata

Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada

pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes

duplicados

Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do

receptor

rdt20 tem um problema fatal

Transport Layer 3-29

rdt21 transmissor trata ACKNAKsperdidos

rdt21 receptor trata ACKNAKsperdidos

Wait for 0 from below

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)

Wait for 1 from below

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)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

Transport Layer 3-31

Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados

bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1

Receptorbull Deve verificar se o pacote recebido eacute duplicado

bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor

rdt21 discussatildeo

Transport Layer 3-32

bull Mesma funcionalidade do rdt21 usando somente ACKs

bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido

bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente

rdt22 um protocolo sem NAK

Transport Layer 3-33

aguardachamada 0

de cima

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)

aguardaACK

0

fragmento FSMdo transmissor

aguarda

0 de baixo

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento FSMdo receptor

Λ

rdt22 fragmentos do transmissor e do receptor

Transport Layer 3-34

Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante

Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)

bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso

bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido

bull Exige um temporizador decrescente

rdt30 canais com erros e perdas

Transport Layer 3-35

Transmissor rdt30

Transport Layer 3-36

rdt30 em accedilatildeo

Transport Layer 3-37

rdt30 em accedilatildeo

Transport Layer 3-38

bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado

bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps

bull O protocolo de rede limita o uso dos recursos fiacutesicos

bull rdt30 funciona mas o desempenho eacute sofriacutevel

bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB

Desempenho do rdt30

Ttransmis

satildeo

= 8 kbpkt109 bs

= 8 microsegL (tamanho do pacote em bits)

R (taxa de transmissatildeo bps)=

Usender=008

30008 = 000027 L RRTT + L R

=

Transport Layer 3-39

rdt30 operaccedilatildeo pare e espere

Transmissatildeo do 1ordm Bit dopacote t = 0

emissor receptor

RTT

Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK

Recebe ACK envia proacuteximopacote t = RTT + L R

U sender

= 008

30008 = 000027

microsec

L R

RTT + L R =

Transport Layer 3-40

Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos

bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada

bull Armazenamento no transmissor eou no receptor

bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

Protocolos com paralelismo (pipelining)

Transport Layer 3-41

Pipelining aumento da utilizaccedilatildeo

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Chegada do primeiro bitChegada do uacuteltimo bit envia ACK

Chegada do ACK envia o proacuteximo pacote t = RTT + L R

U emissor

= 024

30008 = 00008

microsecon

3 L R

RTT + L R =

Aumenta a utilizaccedilatildeopor um fator de 3

Transport Layer 3-42

Protocolos do tipo Pipelining

Go-back-N visatildeo geral Emissor pode enviar ateacute N

pacotes natildeo reconhecidos(unacked) no pipeline

Receptor envia acksacumulativos

Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo

Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido

Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)

Retransmissatildeo seletiva visatildeogeral

Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)

Receptor reconhece (acks) pacotes individuais

Emissor manteacutemtemporizador para cadapacote natildeo reconhecido

Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido

Transport Layer 3-43

Transmissor

bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote

bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos

bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)

bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela

Go-Back-N

Transport Layer 3-44

GBN FSM estendida para o transmissor

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)

Λ

Λ

Transport Layer 3-45

bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum

bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem

GBN FSM estendida para o receptor

Wait

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(0ACKchksum)

Λ

udt_send(sndpkt)

default

Transport Layer 3-46

GBN em accedilatildeo

Transport Layer 3-47

bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior

bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido

bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos

Retransmissatildeo seletiva

Transport Layer 3-48

Retransmissatildeo seletiva janelas do transmissore do receptor

Transport Layer 3-49

TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de

sequumlecircncia disponiacutevel estaacute najanela envia o pacote

Timeout(n)bull Reenvia pacote n restart

timerACK (n) em

[sendbasesendbase+N]bull Marca pacote n como

recebidobull Se n eacute o menor pacote natildeo

reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido

Retransmissatildeo seletiva

RECEPTORPacote n em [rcvbase rcvbase +

N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem

entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido

pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora

Transport Layer 3-50

Retransmissatildeo seletiva em accedilatildeo

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-19

bull 31 Serviccedilos da camada de transporte

bull 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

bull 33 Transporte natildeo orientado agrave conexatildeo UDP

bull 34 Princiacutepios de transferecircncia confiaacutevel de dados

bull 35 Transporte orientado agrave conexatildeo TCPbull Estrutura do segmentobull Transferecircncia confiaacutevel de dadosbull Controle de fluxobull Gerenciamento de conexatildeo

bull 36 Princiacutepios de controle de congestionamento

bull 37 Controle de congestionamento do TCP

Camada de transporte

Transport Layer 3-20

bull Importante nas camadasde aplicaccedilatildeo transportee enlace

bull Top 10 na lista dos toacutepicos mais importantsde redes

bull Caracteriacutesticas dos canaisnatildeo confiaacuteveisdeterminaratildeo a complexidade dos protocolos confiaacuteveis de transferecircncia de dados (rdt)

Princiacutepios de transferecircncia confiaacutevel de dados

Transport Layer 3-21

ladotransmissor

ladoreceptor

rdt_send() chamada da camada superior (ex pela aplicaccedilatildeo) Passa dados paraentregar agrave camada superior receptora

udt_send() chamada pela entidadede transporte para transferir pacotes

para o receptor sobre o canal natildeoconfiaacutevel

rdt_rcv() chamada quando o pacote chegaao lado receptor do canal

deliver_data() chamada pelaentidade de transporte para

entregar dados agrave camada superior

Transferecircncia confiaacutevel o ponto de partida

Transport Layer 3-22

Etapas

bull Desenvolver incrementalmente o transmissor e o receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)

bull Considerar apenas transferecircncias de dados unidirecionaisbull a informaccedilatildeo de controle deve fluir em ambas as direccedilotildees

bull Usar maacutequinas de estados finitos (FSM) para especificar o protocolo transmissor e o receptor

estado1

estado2

evento causando transiccedilatildeo de estadosaccedilotildees tomadas na transiccedilatildeo de estado

estado quando neste ldquoestadordquoo proacuteximo estado fica

unicamente determinadopelo proacuteximo evento

eventoaccedilotildees

Transferecircncia confiaacutevel o ponto de partida

Transport Layer 3-23

bull Canal de transmissatildeoperfeitamente confiaacutevel

bull Natildeo haacute erros de bitsbull Natildeo haacute perdas de pacotes

bull FSMs separadas paratransmissor e receptor

bull Transmissor envia dados parao canal subjacente

bull Receptor lecirc os dados do canal subjacente

rdt10 Transfecircrencia confiaacutevel sobre canaisconfiaacuteveis

Transport Layer 3-24

rdt20 canal com erros de bit

bull Canal subjacente pode ldquocorromperrdquo valores dos bits num pacotebull Checksum para detectar erros de bits

bull A questatildeo como recuperar esses errosbull Reconhecimentos (ACKs) receptor avisa explicitamente aotransmissor que o pacote foi recebido corretamente

bull Reconhecimentos negativos (NAKs) receptor avisaexplicitamente ao transmissor que o pacote tem erros

bull Transmissor reenvia o pacote quando da recepccedilatildeo de um NAK

bull Novos mecanismos no rdt20 (aleacutem do rdt10)bull Detecccedilatildeo de errosbull Retorno do receptor mensagens de controle(ACK NAK) rcvr-gtsender

Transport Layer 3-25

rdt20 especificaccedilatildeo FSM

Transport Layer 3-26

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 operaccedilatildeo com ausecircncia de erros

Transport Layer 3-27

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 cenaacuterio de erro

Transport Layer 3-28

O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata

Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada

pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes

duplicados

Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do

receptor

rdt20 tem um problema fatal

Transport Layer 3-29

rdt21 transmissor trata ACKNAKsperdidos

rdt21 receptor trata ACKNAKsperdidos

Wait for 0 from below

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)

Wait for 1 from below

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)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

Transport Layer 3-31

Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados

bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1

Receptorbull Deve verificar se o pacote recebido eacute duplicado

bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor

rdt21 discussatildeo

Transport Layer 3-32

bull Mesma funcionalidade do rdt21 usando somente ACKs

bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido

bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente

rdt22 um protocolo sem NAK

Transport Layer 3-33

aguardachamada 0

de cima

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)

aguardaACK

0

fragmento FSMdo transmissor

aguarda

0 de baixo

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento FSMdo receptor

Λ

rdt22 fragmentos do transmissor e do receptor

Transport Layer 3-34

Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante

Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)

bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso

bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido

bull Exige um temporizador decrescente

rdt30 canais com erros e perdas

Transport Layer 3-35

Transmissor rdt30

Transport Layer 3-36

rdt30 em accedilatildeo

Transport Layer 3-37

rdt30 em accedilatildeo

Transport Layer 3-38

bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado

bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps

bull O protocolo de rede limita o uso dos recursos fiacutesicos

bull rdt30 funciona mas o desempenho eacute sofriacutevel

bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB

Desempenho do rdt30

Ttransmis

satildeo

= 8 kbpkt109 bs

= 8 microsegL (tamanho do pacote em bits)

R (taxa de transmissatildeo bps)=

Usender=008

30008 = 000027 L RRTT + L R

=

Transport Layer 3-39

rdt30 operaccedilatildeo pare e espere

Transmissatildeo do 1ordm Bit dopacote t = 0

emissor receptor

RTT

Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK

Recebe ACK envia proacuteximopacote t = RTT + L R

U sender

= 008

30008 = 000027

microsec

L R

RTT + L R =

Transport Layer 3-40

Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos

bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada

bull Armazenamento no transmissor eou no receptor

bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

Protocolos com paralelismo (pipelining)

Transport Layer 3-41

Pipelining aumento da utilizaccedilatildeo

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Chegada do primeiro bitChegada do uacuteltimo bit envia ACK

Chegada do ACK envia o proacuteximo pacote t = RTT + L R

U emissor

= 024

30008 = 00008

microsecon

3 L R

RTT + L R =

Aumenta a utilizaccedilatildeopor um fator de 3

Transport Layer 3-42

Protocolos do tipo Pipelining

Go-back-N visatildeo geral Emissor pode enviar ateacute N

pacotes natildeo reconhecidos(unacked) no pipeline

Receptor envia acksacumulativos

Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo

Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido

Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)

Retransmissatildeo seletiva visatildeogeral

Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)

Receptor reconhece (acks) pacotes individuais

Emissor manteacutemtemporizador para cadapacote natildeo reconhecido

Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido

Transport Layer 3-43

Transmissor

bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote

bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos

bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)

bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela

Go-Back-N

Transport Layer 3-44

GBN FSM estendida para o transmissor

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)

Λ

Λ

Transport Layer 3-45

bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum

bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem

GBN FSM estendida para o receptor

Wait

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(0ACKchksum)

Λ

udt_send(sndpkt)

default

Transport Layer 3-46

GBN em accedilatildeo

Transport Layer 3-47

bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior

bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido

bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos

Retransmissatildeo seletiva

Transport Layer 3-48

Retransmissatildeo seletiva janelas do transmissore do receptor

Transport Layer 3-49

TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de

sequumlecircncia disponiacutevel estaacute najanela envia o pacote

Timeout(n)bull Reenvia pacote n restart

timerACK (n) em

[sendbasesendbase+N]bull Marca pacote n como

recebidobull Se n eacute o menor pacote natildeo

reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido

Retransmissatildeo seletiva

RECEPTORPacote n em [rcvbase rcvbase +

N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem

entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido

pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora

Transport Layer 3-50

Retransmissatildeo seletiva em accedilatildeo

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-20

bull Importante nas camadasde aplicaccedilatildeo transportee enlace

bull Top 10 na lista dos toacutepicos mais importantsde redes

bull Caracteriacutesticas dos canaisnatildeo confiaacuteveisdeterminaratildeo a complexidade dos protocolos confiaacuteveis de transferecircncia de dados (rdt)

Princiacutepios de transferecircncia confiaacutevel de dados

Transport Layer 3-21

ladotransmissor

ladoreceptor

rdt_send() chamada da camada superior (ex pela aplicaccedilatildeo) Passa dados paraentregar agrave camada superior receptora

udt_send() chamada pela entidadede transporte para transferir pacotes

para o receptor sobre o canal natildeoconfiaacutevel

rdt_rcv() chamada quando o pacote chegaao lado receptor do canal

deliver_data() chamada pelaentidade de transporte para

entregar dados agrave camada superior

Transferecircncia confiaacutevel o ponto de partida

Transport Layer 3-22

Etapas

bull Desenvolver incrementalmente o transmissor e o receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)

bull Considerar apenas transferecircncias de dados unidirecionaisbull a informaccedilatildeo de controle deve fluir em ambas as direccedilotildees

bull Usar maacutequinas de estados finitos (FSM) para especificar o protocolo transmissor e o receptor

estado1

estado2

evento causando transiccedilatildeo de estadosaccedilotildees tomadas na transiccedilatildeo de estado

estado quando neste ldquoestadordquoo proacuteximo estado fica

unicamente determinadopelo proacuteximo evento

eventoaccedilotildees

Transferecircncia confiaacutevel o ponto de partida

Transport Layer 3-23

bull Canal de transmissatildeoperfeitamente confiaacutevel

bull Natildeo haacute erros de bitsbull Natildeo haacute perdas de pacotes

bull FSMs separadas paratransmissor e receptor

bull Transmissor envia dados parao canal subjacente

bull Receptor lecirc os dados do canal subjacente

rdt10 Transfecircrencia confiaacutevel sobre canaisconfiaacuteveis

Transport Layer 3-24

rdt20 canal com erros de bit

bull Canal subjacente pode ldquocorromperrdquo valores dos bits num pacotebull Checksum para detectar erros de bits

bull A questatildeo como recuperar esses errosbull Reconhecimentos (ACKs) receptor avisa explicitamente aotransmissor que o pacote foi recebido corretamente

bull Reconhecimentos negativos (NAKs) receptor avisaexplicitamente ao transmissor que o pacote tem erros

bull Transmissor reenvia o pacote quando da recepccedilatildeo de um NAK

bull Novos mecanismos no rdt20 (aleacutem do rdt10)bull Detecccedilatildeo de errosbull Retorno do receptor mensagens de controle(ACK NAK) rcvr-gtsender

Transport Layer 3-25

rdt20 especificaccedilatildeo FSM

Transport Layer 3-26

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 operaccedilatildeo com ausecircncia de erros

Transport Layer 3-27

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 cenaacuterio de erro

Transport Layer 3-28

O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata

Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada

pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes

duplicados

Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do

receptor

rdt20 tem um problema fatal

Transport Layer 3-29

rdt21 transmissor trata ACKNAKsperdidos

rdt21 receptor trata ACKNAKsperdidos

Wait for 0 from below

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)

Wait for 1 from below

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)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

Transport Layer 3-31

Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados

bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1

Receptorbull Deve verificar se o pacote recebido eacute duplicado

bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor

rdt21 discussatildeo

Transport Layer 3-32

bull Mesma funcionalidade do rdt21 usando somente ACKs

bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido

bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente

rdt22 um protocolo sem NAK

Transport Layer 3-33

aguardachamada 0

de cima

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)

aguardaACK

0

fragmento FSMdo transmissor

aguarda

0 de baixo

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento FSMdo receptor

Λ

rdt22 fragmentos do transmissor e do receptor

Transport Layer 3-34

Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante

Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)

bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso

bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido

bull Exige um temporizador decrescente

rdt30 canais com erros e perdas

Transport Layer 3-35

Transmissor rdt30

Transport Layer 3-36

rdt30 em accedilatildeo

Transport Layer 3-37

rdt30 em accedilatildeo

Transport Layer 3-38

bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado

bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps

bull O protocolo de rede limita o uso dos recursos fiacutesicos

bull rdt30 funciona mas o desempenho eacute sofriacutevel

bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB

Desempenho do rdt30

Ttransmis

satildeo

= 8 kbpkt109 bs

= 8 microsegL (tamanho do pacote em bits)

R (taxa de transmissatildeo bps)=

Usender=008

30008 = 000027 L RRTT + L R

=

Transport Layer 3-39

rdt30 operaccedilatildeo pare e espere

Transmissatildeo do 1ordm Bit dopacote t = 0

emissor receptor

RTT

Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK

Recebe ACK envia proacuteximopacote t = RTT + L R

U sender

= 008

30008 = 000027

microsec

L R

RTT + L R =

Transport Layer 3-40

Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos

bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada

bull Armazenamento no transmissor eou no receptor

bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

Protocolos com paralelismo (pipelining)

Transport Layer 3-41

Pipelining aumento da utilizaccedilatildeo

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Chegada do primeiro bitChegada do uacuteltimo bit envia ACK

Chegada do ACK envia o proacuteximo pacote t = RTT + L R

U emissor

= 024

30008 = 00008

microsecon

3 L R

RTT + L R =

Aumenta a utilizaccedilatildeopor um fator de 3

Transport Layer 3-42

Protocolos do tipo Pipelining

Go-back-N visatildeo geral Emissor pode enviar ateacute N

pacotes natildeo reconhecidos(unacked) no pipeline

Receptor envia acksacumulativos

Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo

Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido

Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)

Retransmissatildeo seletiva visatildeogeral

Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)

Receptor reconhece (acks) pacotes individuais

Emissor manteacutemtemporizador para cadapacote natildeo reconhecido

Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido

Transport Layer 3-43

Transmissor

bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote

bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos

bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)

bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela

Go-Back-N

Transport Layer 3-44

GBN FSM estendida para o transmissor

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)

Λ

Λ

Transport Layer 3-45

bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum

bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem

GBN FSM estendida para o receptor

Wait

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(0ACKchksum)

Λ

udt_send(sndpkt)

default

Transport Layer 3-46

GBN em accedilatildeo

Transport Layer 3-47

bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior

bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido

bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos

Retransmissatildeo seletiva

Transport Layer 3-48

Retransmissatildeo seletiva janelas do transmissore do receptor

Transport Layer 3-49

TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de

sequumlecircncia disponiacutevel estaacute najanela envia o pacote

Timeout(n)bull Reenvia pacote n restart

timerACK (n) em

[sendbasesendbase+N]bull Marca pacote n como

recebidobull Se n eacute o menor pacote natildeo

reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido

Retransmissatildeo seletiva

RECEPTORPacote n em [rcvbase rcvbase +

N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem

entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido

pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora

Transport Layer 3-50

Retransmissatildeo seletiva em accedilatildeo

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-21

ladotransmissor

ladoreceptor

rdt_send() chamada da camada superior (ex pela aplicaccedilatildeo) Passa dados paraentregar agrave camada superior receptora

udt_send() chamada pela entidadede transporte para transferir pacotes

para o receptor sobre o canal natildeoconfiaacutevel

rdt_rcv() chamada quando o pacote chegaao lado receptor do canal

deliver_data() chamada pelaentidade de transporte para

entregar dados agrave camada superior

Transferecircncia confiaacutevel o ponto de partida

Transport Layer 3-22

Etapas

bull Desenvolver incrementalmente o transmissor e o receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)

bull Considerar apenas transferecircncias de dados unidirecionaisbull a informaccedilatildeo de controle deve fluir em ambas as direccedilotildees

bull Usar maacutequinas de estados finitos (FSM) para especificar o protocolo transmissor e o receptor

estado1

estado2

evento causando transiccedilatildeo de estadosaccedilotildees tomadas na transiccedilatildeo de estado

estado quando neste ldquoestadordquoo proacuteximo estado fica

unicamente determinadopelo proacuteximo evento

eventoaccedilotildees

Transferecircncia confiaacutevel o ponto de partida

Transport Layer 3-23

bull Canal de transmissatildeoperfeitamente confiaacutevel

bull Natildeo haacute erros de bitsbull Natildeo haacute perdas de pacotes

bull FSMs separadas paratransmissor e receptor

bull Transmissor envia dados parao canal subjacente

bull Receptor lecirc os dados do canal subjacente

rdt10 Transfecircrencia confiaacutevel sobre canaisconfiaacuteveis

Transport Layer 3-24

rdt20 canal com erros de bit

bull Canal subjacente pode ldquocorromperrdquo valores dos bits num pacotebull Checksum para detectar erros de bits

bull A questatildeo como recuperar esses errosbull Reconhecimentos (ACKs) receptor avisa explicitamente aotransmissor que o pacote foi recebido corretamente

bull Reconhecimentos negativos (NAKs) receptor avisaexplicitamente ao transmissor que o pacote tem erros

bull Transmissor reenvia o pacote quando da recepccedilatildeo de um NAK

bull Novos mecanismos no rdt20 (aleacutem do rdt10)bull Detecccedilatildeo de errosbull Retorno do receptor mensagens de controle(ACK NAK) rcvr-gtsender

Transport Layer 3-25

rdt20 especificaccedilatildeo FSM

Transport Layer 3-26

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 operaccedilatildeo com ausecircncia de erros

Transport Layer 3-27

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 cenaacuterio de erro

Transport Layer 3-28

O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata

Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada

pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes

duplicados

Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do

receptor

rdt20 tem um problema fatal

Transport Layer 3-29

rdt21 transmissor trata ACKNAKsperdidos

rdt21 receptor trata ACKNAKsperdidos

Wait for 0 from below

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)

Wait for 1 from below

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)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

Transport Layer 3-31

Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados

bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1

Receptorbull Deve verificar se o pacote recebido eacute duplicado

bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor

rdt21 discussatildeo

Transport Layer 3-32

bull Mesma funcionalidade do rdt21 usando somente ACKs

bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido

bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente

rdt22 um protocolo sem NAK

Transport Layer 3-33

aguardachamada 0

de cima

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)

aguardaACK

0

fragmento FSMdo transmissor

aguarda

0 de baixo

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento FSMdo receptor

Λ

rdt22 fragmentos do transmissor e do receptor

Transport Layer 3-34

Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante

Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)

bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso

bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido

bull Exige um temporizador decrescente

rdt30 canais com erros e perdas

Transport Layer 3-35

Transmissor rdt30

Transport Layer 3-36

rdt30 em accedilatildeo

Transport Layer 3-37

rdt30 em accedilatildeo

Transport Layer 3-38

bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado

bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps

bull O protocolo de rede limita o uso dos recursos fiacutesicos

bull rdt30 funciona mas o desempenho eacute sofriacutevel

bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB

Desempenho do rdt30

Ttransmis

satildeo

= 8 kbpkt109 bs

= 8 microsegL (tamanho do pacote em bits)

R (taxa de transmissatildeo bps)=

Usender=008

30008 = 000027 L RRTT + L R

=

Transport Layer 3-39

rdt30 operaccedilatildeo pare e espere

Transmissatildeo do 1ordm Bit dopacote t = 0

emissor receptor

RTT

Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK

Recebe ACK envia proacuteximopacote t = RTT + L R

U sender

= 008

30008 = 000027

microsec

L R

RTT + L R =

Transport Layer 3-40

Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos

bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada

bull Armazenamento no transmissor eou no receptor

bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

Protocolos com paralelismo (pipelining)

Transport Layer 3-41

Pipelining aumento da utilizaccedilatildeo

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Chegada do primeiro bitChegada do uacuteltimo bit envia ACK

Chegada do ACK envia o proacuteximo pacote t = RTT + L R

U emissor

= 024

30008 = 00008

microsecon

3 L R

RTT + L R =

Aumenta a utilizaccedilatildeopor um fator de 3

Transport Layer 3-42

Protocolos do tipo Pipelining

Go-back-N visatildeo geral Emissor pode enviar ateacute N

pacotes natildeo reconhecidos(unacked) no pipeline

Receptor envia acksacumulativos

Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo

Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido

Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)

Retransmissatildeo seletiva visatildeogeral

Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)

Receptor reconhece (acks) pacotes individuais

Emissor manteacutemtemporizador para cadapacote natildeo reconhecido

Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido

Transport Layer 3-43

Transmissor

bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote

bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos

bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)

bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela

Go-Back-N

Transport Layer 3-44

GBN FSM estendida para o transmissor

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)

Λ

Λ

Transport Layer 3-45

bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum

bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem

GBN FSM estendida para o receptor

Wait

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(0ACKchksum)

Λ

udt_send(sndpkt)

default

Transport Layer 3-46

GBN em accedilatildeo

Transport Layer 3-47

bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior

bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido

bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos

Retransmissatildeo seletiva

Transport Layer 3-48

Retransmissatildeo seletiva janelas do transmissore do receptor

Transport Layer 3-49

TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de

sequumlecircncia disponiacutevel estaacute najanela envia o pacote

Timeout(n)bull Reenvia pacote n restart

timerACK (n) em

[sendbasesendbase+N]bull Marca pacote n como

recebidobull Se n eacute o menor pacote natildeo

reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido

Retransmissatildeo seletiva

RECEPTORPacote n em [rcvbase rcvbase +

N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem

entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido

pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora

Transport Layer 3-50

Retransmissatildeo seletiva em accedilatildeo

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-22

Etapas

bull Desenvolver incrementalmente o transmissor e o receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)

bull Considerar apenas transferecircncias de dados unidirecionaisbull a informaccedilatildeo de controle deve fluir em ambas as direccedilotildees

bull Usar maacutequinas de estados finitos (FSM) para especificar o protocolo transmissor e o receptor

estado1

estado2

evento causando transiccedilatildeo de estadosaccedilotildees tomadas na transiccedilatildeo de estado

estado quando neste ldquoestadordquoo proacuteximo estado fica

unicamente determinadopelo proacuteximo evento

eventoaccedilotildees

Transferecircncia confiaacutevel o ponto de partida

Transport Layer 3-23

bull Canal de transmissatildeoperfeitamente confiaacutevel

bull Natildeo haacute erros de bitsbull Natildeo haacute perdas de pacotes

bull FSMs separadas paratransmissor e receptor

bull Transmissor envia dados parao canal subjacente

bull Receptor lecirc os dados do canal subjacente

rdt10 Transfecircrencia confiaacutevel sobre canaisconfiaacuteveis

Transport Layer 3-24

rdt20 canal com erros de bit

bull Canal subjacente pode ldquocorromperrdquo valores dos bits num pacotebull Checksum para detectar erros de bits

bull A questatildeo como recuperar esses errosbull Reconhecimentos (ACKs) receptor avisa explicitamente aotransmissor que o pacote foi recebido corretamente

bull Reconhecimentos negativos (NAKs) receptor avisaexplicitamente ao transmissor que o pacote tem erros

bull Transmissor reenvia o pacote quando da recepccedilatildeo de um NAK

bull Novos mecanismos no rdt20 (aleacutem do rdt10)bull Detecccedilatildeo de errosbull Retorno do receptor mensagens de controle(ACK NAK) rcvr-gtsender

Transport Layer 3-25

rdt20 especificaccedilatildeo FSM

Transport Layer 3-26

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 operaccedilatildeo com ausecircncia de erros

Transport Layer 3-27

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 cenaacuterio de erro

Transport Layer 3-28

O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata

Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada

pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes

duplicados

Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do

receptor

rdt20 tem um problema fatal

Transport Layer 3-29

rdt21 transmissor trata ACKNAKsperdidos

rdt21 receptor trata ACKNAKsperdidos

Wait for 0 from below

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)

Wait for 1 from below

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)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

Transport Layer 3-31

Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados

bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1

Receptorbull Deve verificar se o pacote recebido eacute duplicado

bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor

rdt21 discussatildeo

Transport Layer 3-32

bull Mesma funcionalidade do rdt21 usando somente ACKs

bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido

bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente

rdt22 um protocolo sem NAK

Transport Layer 3-33

aguardachamada 0

de cima

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)

aguardaACK

0

fragmento FSMdo transmissor

aguarda

0 de baixo

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento FSMdo receptor

Λ

rdt22 fragmentos do transmissor e do receptor

Transport Layer 3-34

Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante

Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)

bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso

bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido

bull Exige um temporizador decrescente

rdt30 canais com erros e perdas

Transport Layer 3-35

Transmissor rdt30

Transport Layer 3-36

rdt30 em accedilatildeo

Transport Layer 3-37

rdt30 em accedilatildeo

Transport Layer 3-38

bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado

bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps

bull O protocolo de rede limita o uso dos recursos fiacutesicos

bull rdt30 funciona mas o desempenho eacute sofriacutevel

bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB

Desempenho do rdt30

Ttransmis

satildeo

= 8 kbpkt109 bs

= 8 microsegL (tamanho do pacote em bits)

R (taxa de transmissatildeo bps)=

Usender=008

30008 = 000027 L RRTT + L R

=

Transport Layer 3-39

rdt30 operaccedilatildeo pare e espere

Transmissatildeo do 1ordm Bit dopacote t = 0

emissor receptor

RTT

Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK

Recebe ACK envia proacuteximopacote t = RTT + L R

U sender

= 008

30008 = 000027

microsec

L R

RTT + L R =

Transport Layer 3-40

Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos

bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada

bull Armazenamento no transmissor eou no receptor

bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

Protocolos com paralelismo (pipelining)

Transport Layer 3-41

Pipelining aumento da utilizaccedilatildeo

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Chegada do primeiro bitChegada do uacuteltimo bit envia ACK

Chegada do ACK envia o proacuteximo pacote t = RTT + L R

U emissor

= 024

30008 = 00008

microsecon

3 L R

RTT + L R =

Aumenta a utilizaccedilatildeopor um fator de 3

Transport Layer 3-42

Protocolos do tipo Pipelining

Go-back-N visatildeo geral Emissor pode enviar ateacute N

pacotes natildeo reconhecidos(unacked) no pipeline

Receptor envia acksacumulativos

Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo

Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido

Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)

Retransmissatildeo seletiva visatildeogeral

Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)

Receptor reconhece (acks) pacotes individuais

Emissor manteacutemtemporizador para cadapacote natildeo reconhecido

Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido

Transport Layer 3-43

Transmissor

bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote

bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos

bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)

bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela

Go-Back-N

Transport Layer 3-44

GBN FSM estendida para o transmissor

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)

Λ

Λ

Transport Layer 3-45

bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum

bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem

GBN FSM estendida para o receptor

Wait

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(0ACKchksum)

Λ

udt_send(sndpkt)

default

Transport Layer 3-46

GBN em accedilatildeo

Transport Layer 3-47

bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior

bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido

bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos

Retransmissatildeo seletiva

Transport Layer 3-48

Retransmissatildeo seletiva janelas do transmissore do receptor

Transport Layer 3-49

TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de

sequumlecircncia disponiacutevel estaacute najanela envia o pacote

Timeout(n)bull Reenvia pacote n restart

timerACK (n) em

[sendbasesendbase+N]bull Marca pacote n como

recebidobull Se n eacute o menor pacote natildeo

reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido

Retransmissatildeo seletiva

RECEPTORPacote n em [rcvbase rcvbase +

N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem

entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido

pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora

Transport Layer 3-50

Retransmissatildeo seletiva em accedilatildeo

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-23

bull Canal de transmissatildeoperfeitamente confiaacutevel

bull Natildeo haacute erros de bitsbull Natildeo haacute perdas de pacotes

bull FSMs separadas paratransmissor e receptor

bull Transmissor envia dados parao canal subjacente

bull Receptor lecirc os dados do canal subjacente

rdt10 Transfecircrencia confiaacutevel sobre canaisconfiaacuteveis

Transport Layer 3-24

rdt20 canal com erros de bit

bull Canal subjacente pode ldquocorromperrdquo valores dos bits num pacotebull Checksum para detectar erros de bits

bull A questatildeo como recuperar esses errosbull Reconhecimentos (ACKs) receptor avisa explicitamente aotransmissor que o pacote foi recebido corretamente

bull Reconhecimentos negativos (NAKs) receptor avisaexplicitamente ao transmissor que o pacote tem erros

bull Transmissor reenvia o pacote quando da recepccedilatildeo de um NAK

bull Novos mecanismos no rdt20 (aleacutem do rdt10)bull Detecccedilatildeo de errosbull Retorno do receptor mensagens de controle(ACK NAK) rcvr-gtsender

Transport Layer 3-25

rdt20 especificaccedilatildeo FSM

Transport Layer 3-26

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 operaccedilatildeo com ausecircncia de erros

Transport Layer 3-27

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 cenaacuterio de erro

Transport Layer 3-28

O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata

Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada

pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes

duplicados

Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do

receptor

rdt20 tem um problema fatal

Transport Layer 3-29

rdt21 transmissor trata ACKNAKsperdidos

rdt21 receptor trata ACKNAKsperdidos

Wait for 0 from below

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)

Wait for 1 from below

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)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

Transport Layer 3-31

Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados

bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1

Receptorbull Deve verificar se o pacote recebido eacute duplicado

bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor

rdt21 discussatildeo

Transport Layer 3-32

bull Mesma funcionalidade do rdt21 usando somente ACKs

bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido

bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente

rdt22 um protocolo sem NAK

Transport Layer 3-33

aguardachamada 0

de cima

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)

aguardaACK

0

fragmento FSMdo transmissor

aguarda

0 de baixo

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento FSMdo receptor

Λ

rdt22 fragmentos do transmissor e do receptor

Transport Layer 3-34

Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante

Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)

bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso

bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido

bull Exige um temporizador decrescente

rdt30 canais com erros e perdas

Transport Layer 3-35

Transmissor rdt30

Transport Layer 3-36

rdt30 em accedilatildeo

Transport Layer 3-37

rdt30 em accedilatildeo

Transport Layer 3-38

bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado

bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps

bull O protocolo de rede limita o uso dos recursos fiacutesicos

bull rdt30 funciona mas o desempenho eacute sofriacutevel

bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB

Desempenho do rdt30

Ttransmis

satildeo

= 8 kbpkt109 bs

= 8 microsegL (tamanho do pacote em bits)

R (taxa de transmissatildeo bps)=

Usender=008

30008 = 000027 L RRTT + L R

=

Transport Layer 3-39

rdt30 operaccedilatildeo pare e espere

Transmissatildeo do 1ordm Bit dopacote t = 0

emissor receptor

RTT

Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK

Recebe ACK envia proacuteximopacote t = RTT + L R

U sender

= 008

30008 = 000027

microsec

L R

RTT + L R =

Transport Layer 3-40

Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos

bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada

bull Armazenamento no transmissor eou no receptor

bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

Protocolos com paralelismo (pipelining)

Transport Layer 3-41

Pipelining aumento da utilizaccedilatildeo

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Chegada do primeiro bitChegada do uacuteltimo bit envia ACK

Chegada do ACK envia o proacuteximo pacote t = RTT + L R

U emissor

= 024

30008 = 00008

microsecon

3 L R

RTT + L R =

Aumenta a utilizaccedilatildeopor um fator de 3

Transport Layer 3-42

Protocolos do tipo Pipelining

Go-back-N visatildeo geral Emissor pode enviar ateacute N

pacotes natildeo reconhecidos(unacked) no pipeline

Receptor envia acksacumulativos

Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo

Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido

Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)

Retransmissatildeo seletiva visatildeogeral

Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)

Receptor reconhece (acks) pacotes individuais

Emissor manteacutemtemporizador para cadapacote natildeo reconhecido

Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido

Transport Layer 3-43

Transmissor

bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote

bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos

bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)

bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela

Go-Back-N

Transport Layer 3-44

GBN FSM estendida para o transmissor

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)

Λ

Λ

Transport Layer 3-45

bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum

bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem

GBN FSM estendida para o receptor

Wait

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(0ACKchksum)

Λ

udt_send(sndpkt)

default

Transport Layer 3-46

GBN em accedilatildeo

Transport Layer 3-47

bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior

bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido

bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos

Retransmissatildeo seletiva

Transport Layer 3-48

Retransmissatildeo seletiva janelas do transmissore do receptor

Transport Layer 3-49

TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de

sequumlecircncia disponiacutevel estaacute najanela envia o pacote

Timeout(n)bull Reenvia pacote n restart

timerACK (n) em

[sendbasesendbase+N]bull Marca pacote n como

recebidobull Se n eacute o menor pacote natildeo

reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido

Retransmissatildeo seletiva

RECEPTORPacote n em [rcvbase rcvbase +

N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem

entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido

pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora

Transport Layer 3-50

Retransmissatildeo seletiva em accedilatildeo

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-24

rdt20 canal com erros de bit

bull Canal subjacente pode ldquocorromperrdquo valores dos bits num pacotebull Checksum para detectar erros de bits

bull A questatildeo como recuperar esses errosbull Reconhecimentos (ACKs) receptor avisa explicitamente aotransmissor que o pacote foi recebido corretamente

bull Reconhecimentos negativos (NAKs) receptor avisaexplicitamente ao transmissor que o pacote tem erros

bull Transmissor reenvia o pacote quando da recepccedilatildeo de um NAK

bull Novos mecanismos no rdt20 (aleacutem do rdt10)bull Detecccedilatildeo de errosbull Retorno do receptor mensagens de controle(ACK NAK) rcvr-gtsender

Transport Layer 3-25

rdt20 especificaccedilatildeo FSM

Transport Layer 3-26

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 operaccedilatildeo com ausecircncia de erros

Transport Layer 3-27

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 cenaacuterio de erro

Transport Layer 3-28

O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata

Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada

pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes

duplicados

Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do

receptor

rdt20 tem um problema fatal

Transport Layer 3-29

rdt21 transmissor trata ACKNAKsperdidos

rdt21 receptor trata ACKNAKsperdidos

Wait for 0 from below

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)

Wait for 1 from below

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)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

Transport Layer 3-31

Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados

bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1

Receptorbull Deve verificar se o pacote recebido eacute duplicado

bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor

rdt21 discussatildeo

Transport Layer 3-32

bull Mesma funcionalidade do rdt21 usando somente ACKs

bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido

bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente

rdt22 um protocolo sem NAK

Transport Layer 3-33

aguardachamada 0

de cima

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)

aguardaACK

0

fragmento FSMdo transmissor

aguarda

0 de baixo

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento FSMdo receptor

Λ

rdt22 fragmentos do transmissor e do receptor

Transport Layer 3-34

Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante

Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)

bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso

bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido

bull Exige um temporizador decrescente

rdt30 canais com erros e perdas

Transport Layer 3-35

Transmissor rdt30

Transport Layer 3-36

rdt30 em accedilatildeo

Transport Layer 3-37

rdt30 em accedilatildeo

Transport Layer 3-38

bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado

bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps

bull O protocolo de rede limita o uso dos recursos fiacutesicos

bull rdt30 funciona mas o desempenho eacute sofriacutevel

bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB

Desempenho do rdt30

Ttransmis

satildeo

= 8 kbpkt109 bs

= 8 microsegL (tamanho do pacote em bits)

R (taxa de transmissatildeo bps)=

Usender=008

30008 = 000027 L RRTT + L R

=

Transport Layer 3-39

rdt30 operaccedilatildeo pare e espere

Transmissatildeo do 1ordm Bit dopacote t = 0

emissor receptor

RTT

Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK

Recebe ACK envia proacuteximopacote t = RTT + L R

U sender

= 008

30008 = 000027

microsec

L R

RTT + L R =

Transport Layer 3-40

Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos

bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada

bull Armazenamento no transmissor eou no receptor

bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

Protocolos com paralelismo (pipelining)

Transport Layer 3-41

Pipelining aumento da utilizaccedilatildeo

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Chegada do primeiro bitChegada do uacuteltimo bit envia ACK

Chegada do ACK envia o proacuteximo pacote t = RTT + L R

U emissor

= 024

30008 = 00008

microsecon

3 L R

RTT + L R =

Aumenta a utilizaccedilatildeopor um fator de 3

Transport Layer 3-42

Protocolos do tipo Pipelining

Go-back-N visatildeo geral Emissor pode enviar ateacute N

pacotes natildeo reconhecidos(unacked) no pipeline

Receptor envia acksacumulativos

Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo

Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido

Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)

Retransmissatildeo seletiva visatildeogeral

Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)

Receptor reconhece (acks) pacotes individuais

Emissor manteacutemtemporizador para cadapacote natildeo reconhecido

Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido

Transport Layer 3-43

Transmissor

bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote

bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos

bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)

bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela

Go-Back-N

Transport Layer 3-44

GBN FSM estendida para o transmissor

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)

Λ

Λ

Transport Layer 3-45

bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum

bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem

GBN FSM estendida para o receptor

Wait

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(0ACKchksum)

Λ

udt_send(sndpkt)

default

Transport Layer 3-46

GBN em accedilatildeo

Transport Layer 3-47

bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior

bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido

bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos

Retransmissatildeo seletiva

Transport Layer 3-48

Retransmissatildeo seletiva janelas do transmissore do receptor

Transport Layer 3-49

TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de

sequumlecircncia disponiacutevel estaacute najanela envia o pacote

Timeout(n)bull Reenvia pacote n restart

timerACK (n) em

[sendbasesendbase+N]bull Marca pacote n como

recebidobull Se n eacute o menor pacote natildeo

reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido

Retransmissatildeo seletiva

RECEPTORPacote n em [rcvbase rcvbase +

N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem

entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido

pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora

Transport Layer 3-50

Retransmissatildeo seletiva em accedilatildeo

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-25

rdt20 especificaccedilatildeo FSM

Transport Layer 3-26

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 operaccedilatildeo com ausecircncia de erros

Transport Layer 3-27

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 cenaacuterio de erro

Transport Layer 3-28

O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata

Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada

pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes

duplicados

Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do

receptor

rdt20 tem um problema fatal

Transport Layer 3-29

rdt21 transmissor trata ACKNAKsperdidos

rdt21 receptor trata ACKNAKsperdidos

Wait for 0 from below

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)

Wait for 1 from below

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)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

Transport Layer 3-31

Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados

bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1

Receptorbull Deve verificar se o pacote recebido eacute duplicado

bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor

rdt21 discussatildeo

Transport Layer 3-32

bull Mesma funcionalidade do rdt21 usando somente ACKs

bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido

bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente

rdt22 um protocolo sem NAK

Transport Layer 3-33

aguardachamada 0

de cima

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)

aguardaACK

0

fragmento FSMdo transmissor

aguarda

0 de baixo

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento FSMdo receptor

Λ

rdt22 fragmentos do transmissor e do receptor

Transport Layer 3-34

Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante

Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)

bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso

bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido

bull Exige um temporizador decrescente

rdt30 canais com erros e perdas

Transport Layer 3-35

Transmissor rdt30

Transport Layer 3-36

rdt30 em accedilatildeo

Transport Layer 3-37

rdt30 em accedilatildeo

Transport Layer 3-38

bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado

bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps

bull O protocolo de rede limita o uso dos recursos fiacutesicos

bull rdt30 funciona mas o desempenho eacute sofriacutevel

bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB

Desempenho do rdt30

Ttransmis

satildeo

= 8 kbpkt109 bs

= 8 microsegL (tamanho do pacote em bits)

R (taxa de transmissatildeo bps)=

Usender=008

30008 = 000027 L RRTT + L R

=

Transport Layer 3-39

rdt30 operaccedilatildeo pare e espere

Transmissatildeo do 1ordm Bit dopacote t = 0

emissor receptor

RTT

Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK

Recebe ACK envia proacuteximopacote t = RTT + L R

U sender

= 008

30008 = 000027

microsec

L R

RTT + L R =

Transport Layer 3-40

Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos

bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada

bull Armazenamento no transmissor eou no receptor

bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

Protocolos com paralelismo (pipelining)

Transport Layer 3-41

Pipelining aumento da utilizaccedilatildeo

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Chegada do primeiro bitChegada do uacuteltimo bit envia ACK

Chegada do ACK envia o proacuteximo pacote t = RTT + L R

U emissor

= 024

30008 = 00008

microsecon

3 L R

RTT + L R =

Aumenta a utilizaccedilatildeopor um fator de 3

Transport Layer 3-42

Protocolos do tipo Pipelining

Go-back-N visatildeo geral Emissor pode enviar ateacute N

pacotes natildeo reconhecidos(unacked) no pipeline

Receptor envia acksacumulativos

Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo

Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido

Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)

Retransmissatildeo seletiva visatildeogeral

Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)

Receptor reconhece (acks) pacotes individuais

Emissor manteacutemtemporizador para cadapacote natildeo reconhecido

Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido

Transport Layer 3-43

Transmissor

bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote

bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos

bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)

bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela

Go-Back-N

Transport Layer 3-44

GBN FSM estendida para o transmissor

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)

Λ

Λ

Transport Layer 3-45

bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum

bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem

GBN FSM estendida para o receptor

Wait

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(0ACKchksum)

Λ

udt_send(sndpkt)

default

Transport Layer 3-46

GBN em accedilatildeo

Transport Layer 3-47

bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior

bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido

bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos

Retransmissatildeo seletiva

Transport Layer 3-48

Retransmissatildeo seletiva janelas do transmissore do receptor

Transport Layer 3-49

TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de

sequumlecircncia disponiacutevel estaacute najanela envia o pacote

Timeout(n)bull Reenvia pacote n restart

timerACK (n) em

[sendbasesendbase+N]bull Marca pacote n como

recebidobull Se n eacute o menor pacote natildeo

reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido

Retransmissatildeo seletiva

RECEPTORPacote n em [rcvbase rcvbase +

N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem

entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido

pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora

Transport Layer 3-50

Retransmissatildeo seletiva em accedilatildeo

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-26

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 operaccedilatildeo com ausecircncia de erros

Transport Layer 3-27

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 cenaacuterio de erro

Transport Layer 3-28

O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata

Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada

pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes

duplicados

Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do

receptor

rdt20 tem um problema fatal

Transport Layer 3-29

rdt21 transmissor trata ACKNAKsperdidos

rdt21 receptor trata ACKNAKsperdidos

Wait for 0 from below

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)

Wait for 1 from below

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)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

Transport Layer 3-31

Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados

bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1

Receptorbull Deve verificar se o pacote recebido eacute duplicado

bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor

rdt21 discussatildeo

Transport Layer 3-32

bull Mesma funcionalidade do rdt21 usando somente ACKs

bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido

bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente

rdt22 um protocolo sem NAK

Transport Layer 3-33

aguardachamada 0

de cima

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)

aguardaACK

0

fragmento FSMdo transmissor

aguarda

0 de baixo

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento FSMdo receptor

Λ

rdt22 fragmentos do transmissor e do receptor

Transport Layer 3-34

Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante

Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)

bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso

bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido

bull Exige um temporizador decrescente

rdt30 canais com erros e perdas

Transport Layer 3-35

Transmissor rdt30

Transport Layer 3-36

rdt30 em accedilatildeo

Transport Layer 3-37

rdt30 em accedilatildeo

Transport Layer 3-38

bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado

bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps

bull O protocolo de rede limita o uso dos recursos fiacutesicos

bull rdt30 funciona mas o desempenho eacute sofriacutevel

bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB

Desempenho do rdt30

Ttransmis

satildeo

= 8 kbpkt109 bs

= 8 microsegL (tamanho do pacote em bits)

R (taxa de transmissatildeo bps)=

Usender=008

30008 = 000027 L RRTT + L R

=

Transport Layer 3-39

rdt30 operaccedilatildeo pare e espere

Transmissatildeo do 1ordm Bit dopacote t = 0

emissor receptor

RTT

Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK

Recebe ACK envia proacuteximopacote t = RTT + L R

U sender

= 008

30008 = 000027

microsec

L R

RTT + L R =

Transport Layer 3-40

Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos

bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada

bull Armazenamento no transmissor eou no receptor

bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

Protocolos com paralelismo (pipelining)

Transport Layer 3-41

Pipelining aumento da utilizaccedilatildeo

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Chegada do primeiro bitChegada do uacuteltimo bit envia ACK

Chegada do ACK envia o proacuteximo pacote t = RTT + L R

U emissor

= 024

30008 = 00008

microsecon

3 L R

RTT + L R =

Aumenta a utilizaccedilatildeopor um fator de 3

Transport Layer 3-42

Protocolos do tipo Pipelining

Go-back-N visatildeo geral Emissor pode enviar ateacute N

pacotes natildeo reconhecidos(unacked) no pipeline

Receptor envia acksacumulativos

Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo

Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido

Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)

Retransmissatildeo seletiva visatildeogeral

Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)

Receptor reconhece (acks) pacotes individuais

Emissor manteacutemtemporizador para cadapacote natildeo reconhecido

Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido

Transport Layer 3-43

Transmissor

bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote

bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos

bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)

bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela

Go-Back-N

Transport Layer 3-44

GBN FSM estendida para o transmissor

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)

Λ

Λ

Transport Layer 3-45

bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum

bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem

GBN FSM estendida para o receptor

Wait

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(0ACKchksum)

Λ

udt_send(sndpkt)

default

Transport Layer 3-46

GBN em accedilatildeo

Transport Layer 3-47

bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior

bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido

bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos

Retransmissatildeo seletiva

Transport Layer 3-48

Retransmissatildeo seletiva janelas do transmissore do receptor

Transport Layer 3-49

TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de

sequumlecircncia disponiacutevel estaacute najanela envia o pacote

Timeout(n)bull Reenvia pacote n restart

timerACK (n) em

[sendbasesendbase+N]bull Marca pacote n como

recebidobull Se n eacute o menor pacote natildeo

reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido

Retransmissatildeo seletiva

RECEPTORPacote n em [rcvbase rcvbase +

N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem

entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido

pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora

Transport Layer 3-50

Retransmissatildeo seletiva em accedilatildeo

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-27

aguardachamadade cima

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)

aguardaACK ou

NAK

aguardachamadade baixo

rdt_send(data)

Λ

rdt20 cenaacuterio de erro

Transport Layer 3-28

O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata

Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada

pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes

duplicados

Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do

receptor

rdt20 tem um problema fatal

Transport Layer 3-29

rdt21 transmissor trata ACKNAKsperdidos

rdt21 receptor trata ACKNAKsperdidos

Wait for 0 from below

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)

Wait for 1 from below

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)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

Transport Layer 3-31

Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados

bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1

Receptorbull Deve verificar se o pacote recebido eacute duplicado

bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor

rdt21 discussatildeo

Transport Layer 3-32

bull Mesma funcionalidade do rdt21 usando somente ACKs

bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido

bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente

rdt22 um protocolo sem NAK

Transport Layer 3-33

aguardachamada 0

de cima

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)

aguardaACK

0

fragmento FSMdo transmissor

aguarda

0 de baixo

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento FSMdo receptor

Λ

rdt22 fragmentos do transmissor e do receptor

Transport Layer 3-34

Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante

Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)

bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso

bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido

bull Exige um temporizador decrescente

rdt30 canais com erros e perdas

Transport Layer 3-35

Transmissor rdt30

Transport Layer 3-36

rdt30 em accedilatildeo

Transport Layer 3-37

rdt30 em accedilatildeo

Transport Layer 3-38

bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado

bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps

bull O protocolo de rede limita o uso dos recursos fiacutesicos

bull rdt30 funciona mas o desempenho eacute sofriacutevel

bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB

Desempenho do rdt30

Ttransmis

satildeo

= 8 kbpkt109 bs

= 8 microsegL (tamanho do pacote em bits)

R (taxa de transmissatildeo bps)=

Usender=008

30008 = 000027 L RRTT + L R

=

Transport Layer 3-39

rdt30 operaccedilatildeo pare e espere

Transmissatildeo do 1ordm Bit dopacote t = 0

emissor receptor

RTT

Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK

Recebe ACK envia proacuteximopacote t = RTT + L R

U sender

= 008

30008 = 000027

microsec

L R

RTT + L R =

Transport Layer 3-40

Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos

bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada

bull Armazenamento no transmissor eou no receptor

bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

Protocolos com paralelismo (pipelining)

Transport Layer 3-41

Pipelining aumento da utilizaccedilatildeo

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Chegada do primeiro bitChegada do uacuteltimo bit envia ACK

Chegada do ACK envia o proacuteximo pacote t = RTT + L R

U emissor

= 024

30008 = 00008

microsecon

3 L R

RTT + L R =

Aumenta a utilizaccedilatildeopor um fator de 3

Transport Layer 3-42

Protocolos do tipo Pipelining

Go-back-N visatildeo geral Emissor pode enviar ateacute N

pacotes natildeo reconhecidos(unacked) no pipeline

Receptor envia acksacumulativos

Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo

Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido

Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)

Retransmissatildeo seletiva visatildeogeral

Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)

Receptor reconhece (acks) pacotes individuais

Emissor manteacutemtemporizador para cadapacote natildeo reconhecido

Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido

Transport Layer 3-43

Transmissor

bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote

bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos

bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)

bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela

Go-Back-N

Transport Layer 3-44

GBN FSM estendida para o transmissor

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)

Λ

Λ

Transport Layer 3-45

bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum

bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem

GBN FSM estendida para o receptor

Wait

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(0ACKchksum)

Λ

udt_send(sndpkt)

default

Transport Layer 3-46

GBN em accedilatildeo

Transport Layer 3-47

bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior

bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido

bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos

Retransmissatildeo seletiva

Transport Layer 3-48

Retransmissatildeo seletiva janelas do transmissore do receptor

Transport Layer 3-49

TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de

sequumlecircncia disponiacutevel estaacute najanela envia o pacote

Timeout(n)bull Reenvia pacote n restart

timerACK (n) em

[sendbasesendbase+N]bull Marca pacote n como

recebidobull Se n eacute o menor pacote natildeo

reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido

Retransmissatildeo seletiva

RECEPTORPacote n em [rcvbase rcvbase +

N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem

entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido

pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora

Transport Layer 3-50

Retransmissatildeo seletiva em accedilatildeo

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-28

O que acontece se o ACKNAK eacute corrompidobull Transmissor natildeo sabe o que aconteceu no receptorbull Natildeo pode apenas retransmitir possiacutevel duplicata

Tratando duplicatasbull Transmissor acrescenta nuacutemero de sequumlecircncia em cada

pacotebull Transmissor reenvia o uacuteltimo pacote se ACKNAK for perdidobull Receptor descarta (natildeo passa para a aplicaccedilatildeo) pacotes

duplicados

Pare e espereTransmissor envia um pacote e entatildeo espera pela resposta do

receptor

rdt20 tem um problema fatal

Transport Layer 3-29

rdt21 transmissor trata ACKNAKsperdidos

rdt21 receptor trata ACKNAKsperdidos

Wait for 0 from below

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)

Wait for 1 from below

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)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

Transport Layer 3-31

Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados

bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1

Receptorbull Deve verificar se o pacote recebido eacute duplicado

bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor

rdt21 discussatildeo

Transport Layer 3-32

bull Mesma funcionalidade do rdt21 usando somente ACKs

bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido

bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente

rdt22 um protocolo sem NAK

Transport Layer 3-33

aguardachamada 0

de cima

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)

aguardaACK

0

fragmento FSMdo transmissor

aguarda

0 de baixo

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento FSMdo receptor

Λ

rdt22 fragmentos do transmissor e do receptor

Transport Layer 3-34

Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante

Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)

bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso

bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido

bull Exige um temporizador decrescente

rdt30 canais com erros e perdas

Transport Layer 3-35

Transmissor rdt30

Transport Layer 3-36

rdt30 em accedilatildeo

Transport Layer 3-37

rdt30 em accedilatildeo

Transport Layer 3-38

bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado

bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps

bull O protocolo de rede limita o uso dos recursos fiacutesicos

bull rdt30 funciona mas o desempenho eacute sofriacutevel

bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB

Desempenho do rdt30

Ttransmis

satildeo

= 8 kbpkt109 bs

= 8 microsegL (tamanho do pacote em bits)

R (taxa de transmissatildeo bps)=

Usender=008

30008 = 000027 L RRTT + L R

=

Transport Layer 3-39

rdt30 operaccedilatildeo pare e espere

Transmissatildeo do 1ordm Bit dopacote t = 0

emissor receptor

RTT

Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK

Recebe ACK envia proacuteximopacote t = RTT + L R

U sender

= 008

30008 = 000027

microsec

L R

RTT + L R =

Transport Layer 3-40

Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos

bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada

bull Armazenamento no transmissor eou no receptor

bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

Protocolos com paralelismo (pipelining)

Transport Layer 3-41

Pipelining aumento da utilizaccedilatildeo

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Chegada do primeiro bitChegada do uacuteltimo bit envia ACK

Chegada do ACK envia o proacuteximo pacote t = RTT + L R

U emissor

= 024

30008 = 00008

microsecon

3 L R

RTT + L R =

Aumenta a utilizaccedilatildeopor um fator de 3

Transport Layer 3-42

Protocolos do tipo Pipelining

Go-back-N visatildeo geral Emissor pode enviar ateacute N

pacotes natildeo reconhecidos(unacked) no pipeline

Receptor envia acksacumulativos

Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo

Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido

Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)

Retransmissatildeo seletiva visatildeogeral

Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)

Receptor reconhece (acks) pacotes individuais

Emissor manteacutemtemporizador para cadapacote natildeo reconhecido

Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido

Transport Layer 3-43

Transmissor

bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote

bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos

bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)

bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela

Go-Back-N

Transport Layer 3-44

GBN FSM estendida para o transmissor

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)

Λ

Λ

Transport Layer 3-45

bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum

bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem

GBN FSM estendida para o receptor

Wait

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(0ACKchksum)

Λ

udt_send(sndpkt)

default

Transport Layer 3-46

GBN em accedilatildeo

Transport Layer 3-47

bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior

bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido

bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos

Retransmissatildeo seletiva

Transport Layer 3-48

Retransmissatildeo seletiva janelas do transmissore do receptor

Transport Layer 3-49

TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de

sequumlecircncia disponiacutevel estaacute najanela envia o pacote

Timeout(n)bull Reenvia pacote n restart

timerACK (n) em

[sendbasesendbase+N]bull Marca pacote n como

recebidobull Se n eacute o menor pacote natildeo

reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido

Retransmissatildeo seletiva

RECEPTORPacote n em [rcvbase rcvbase +

N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem

entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido

pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora

Transport Layer 3-50

Retransmissatildeo seletiva em accedilatildeo

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-29

rdt21 transmissor trata ACKNAKsperdidos

rdt21 receptor trata ACKNAKsperdidos

Wait for 0 from below

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)

Wait for 1 from below

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)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

Transport Layer 3-31

Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados

bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1

Receptorbull Deve verificar se o pacote recebido eacute duplicado

bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor

rdt21 discussatildeo

Transport Layer 3-32

bull Mesma funcionalidade do rdt21 usando somente ACKs

bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido

bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente

rdt22 um protocolo sem NAK

Transport Layer 3-33

aguardachamada 0

de cima

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)

aguardaACK

0

fragmento FSMdo transmissor

aguarda

0 de baixo

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento FSMdo receptor

Λ

rdt22 fragmentos do transmissor e do receptor

Transport Layer 3-34

Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante

Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)

bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso

bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido

bull Exige um temporizador decrescente

rdt30 canais com erros e perdas

Transport Layer 3-35

Transmissor rdt30

Transport Layer 3-36

rdt30 em accedilatildeo

Transport Layer 3-37

rdt30 em accedilatildeo

Transport Layer 3-38

bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado

bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps

bull O protocolo de rede limita o uso dos recursos fiacutesicos

bull rdt30 funciona mas o desempenho eacute sofriacutevel

bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB

Desempenho do rdt30

Ttransmis

satildeo

= 8 kbpkt109 bs

= 8 microsegL (tamanho do pacote em bits)

R (taxa de transmissatildeo bps)=

Usender=008

30008 = 000027 L RRTT + L R

=

Transport Layer 3-39

rdt30 operaccedilatildeo pare e espere

Transmissatildeo do 1ordm Bit dopacote t = 0

emissor receptor

RTT

Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK

Recebe ACK envia proacuteximopacote t = RTT + L R

U sender

= 008

30008 = 000027

microsec

L R

RTT + L R =

Transport Layer 3-40

Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos

bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada

bull Armazenamento no transmissor eou no receptor

bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

Protocolos com paralelismo (pipelining)

Transport Layer 3-41

Pipelining aumento da utilizaccedilatildeo

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Chegada do primeiro bitChegada do uacuteltimo bit envia ACK

Chegada do ACK envia o proacuteximo pacote t = RTT + L R

U emissor

= 024

30008 = 00008

microsecon

3 L R

RTT + L R =

Aumenta a utilizaccedilatildeopor um fator de 3

Transport Layer 3-42

Protocolos do tipo Pipelining

Go-back-N visatildeo geral Emissor pode enviar ateacute N

pacotes natildeo reconhecidos(unacked) no pipeline

Receptor envia acksacumulativos

Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo

Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido

Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)

Retransmissatildeo seletiva visatildeogeral

Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)

Receptor reconhece (acks) pacotes individuais

Emissor manteacutemtemporizador para cadapacote natildeo reconhecido

Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido

Transport Layer 3-43

Transmissor

bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote

bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos

bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)

bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela

Go-Back-N

Transport Layer 3-44

GBN FSM estendida para o transmissor

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)

Λ

Λ

Transport Layer 3-45

bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum

bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem

GBN FSM estendida para o receptor

Wait

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(0ACKchksum)

Λ

udt_send(sndpkt)

default

Transport Layer 3-46

GBN em accedilatildeo

Transport Layer 3-47

bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior

bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido

bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos

Retransmissatildeo seletiva

Transport Layer 3-48

Retransmissatildeo seletiva janelas do transmissore do receptor

Transport Layer 3-49

TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de

sequumlecircncia disponiacutevel estaacute najanela envia o pacote

Timeout(n)bull Reenvia pacote n restart

timerACK (n) em

[sendbasesendbase+N]bull Marca pacote n como

recebidobull Se n eacute o menor pacote natildeo

reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido

Retransmissatildeo seletiva

RECEPTORPacote n em [rcvbase rcvbase +

N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem

entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido

pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora

Transport Layer 3-50

Retransmissatildeo seletiva em accedilatildeo

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

rdt21 receptor trata ACKNAKsperdidos

Wait for 0 from below

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp not corrupt(rcvpkt) ampamphas_seq0(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK chksum)udt_send(sndpkt)

Wait for 1 from below

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)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

Transport Layer 3-31

Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados

bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1

Receptorbull Deve verificar se o pacote recebido eacute duplicado

bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor

rdt21 discussatildeo

Transport Layer 3-32

bull Mesma funcionalidade do rdt21 usando somente ACKs

bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido

bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente

rdt22 um protocolo sem NAK

Transport Layer 3-33

aguardachamada 0

de cima

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)

aguardaACK

0

fragmento FSMdo transmissor

aguarda

0 de baixo

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento FSMdo receptor

Λ

rdt22 fragmentos do transmissor e do receptor

Transport Layer 3-34

Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante

Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)

bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso

bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido

bull Exige um temporizador decrescente

rdt30 canais com erros e perdas

Transport Layer 3-35

Transmissor rdt30

Transport Layer 3-36

rdt30 em accedilatildeo

Transport Layer 3-37

rdt30 em accedilatildeo

Transport Layer 3-38

bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado

bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps

bull O protocolo de rede limita o uso dos recursos fiacutesicos

bull rdt30 funciona mas o desempenho eacute sofriacutevel

bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB

Desempenho do rdt30

Ttransmis

satildeo

= 8 kbpkt109 bs

= 8 microsegL (tamanho do pacote em bits)

R (taxa de transmissatildeo bps)=

Usender=008

30008 = 000027 L RRTT + L R

=

Transport Layer 3-39

rdt30 operaccedilatildeo pare e espere

Transmissatildeo do 1ordm Bit dopacote t = 0

emissor receptor

RTT

Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK

Recebe ACK envia proacuteximopacote t = RTT + L R

U sender

= 008

30008 = 000027

microsec

L R

RTT + L R =

Transport Layer 3-40

Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos

bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada

bull Armazenamento no transmissor eou no receptor

bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

Protocolos com paralelismo (pipelining)

Transport Layer 3-41

Pipelining aumento da utilizaccedilatildeo

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Chegada do primeiro bitChegada do uacuteltimo bit envia ACK

Chegada do ACK envia o proacuteximo pacote t = RTT + L R

U emissor

= 024

30008 = 00008

microsecon

3 L R

RTT + L R =

Aumenta a utilizaccedilatildeopor um fator de 3

Transport Layer 3-42

Protocolos do tipo Pipelining

Go-back-N visatildeo geral Emissor pode enviar ateacute N

pacotes natildeo reconhecidos(unacked) no pipeline

Receptor envia acksacumulativos

Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo

Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido

Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)

Retransmissatildeo seletiva visatildeogeral

Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)

Receptor reconhece (acks) pacotes individuais

Emissor manteacutemtemporizador para cadapacote natildeo reconhecido

Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido

Transport Layer 3-43

Transmissor

bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote

bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos

bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)

bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela

Go-Back-N

Transport Layer 3-44

GBN FSM estendida para o transmissor

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)

Λ

Λ

Transport Layer 3-45

bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum

bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem

GBN FSM estendida para o receptor

Wait

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(0ACKchksum)

Λ

udt_send(sndpkt)

default

Transport Layer 3-46

GBN em accedilatildeo

Transport Layer 3-47

bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior

bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido

bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos

Retransmissatildeo seletiva

Transport Layer 3-48

Retransmissatildeo seletiva janelas do transmissore do receptor

Transport Layer 3-49

TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de

sequumlecircncia disponiacutevel estaacute najanela envia o pacote

Timeout(n)bull Reenvia pacote n restart

timerACK (n) em

[sendbasesendbase+N]bull Marca pacote n como

recebidobull Se n eacute o menor pacote natildeo

reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido

Retransmissatildeo seletiva

RECEPTORPacote n em [rcvbase rcvbase +

N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem

entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido

pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora

Transport Layer 3-50

Retransmissatildeo seletiva em accedilatildeo

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-31

Transmissorbull Adiciona nuacutemero de sequumlecircncia ao pacotebull Dois nuacutemeros (0 e 1) bastam Por quecircbull Deve verificar se os ACKNAK recebidos estatildeo corrompidosbull Duas vezes o nuacutemero de estados

bull O estado deve ldquolembrarrdquo se o pacote ldquocorrenterdquo tem nuacutemerode sequumlecircncia 0 ou 1

Receptorbull Deve verificar se o pacote recebido eacute duplicado

bull Estado indica se o pacote 0 ou 1 eacute esperadobull Nota receptor pode natildeo saber se seu uacuteltimo ACKNAK foirecebido pelo transmissor

rdt21 discussatildeo

Transport Layer 3-32

bull Mesma funcionalidade do rdt21 usando somente ACKs

bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido

bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente

rdt22 um protocolo sem NAK

Transport Layer 3-33

aguardachamada 0

de cima

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)

aguardaACK

0

fragmento FSMdo transmissor

aguarda

0 de baixo

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento FSMdo receptor

Λ

rdt22 fragmentos do transmissor e do receptor

Transport Layer 3-34

Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante

Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)

bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso

bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido

bull Exige um temporizador decrescente

rdt30 canais com erros e perdas

Transport Layer 3-35

Transmissor rdt30

Transport Layer 3-36

rdt30 em accedilatildeo

Transport Layer 3-37

rdt30 em accedilatildeo

Transport Layer 3-38

bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado

bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps

bull O protocolo de rede limita o uso dos recursos fiacutesicos

bull rdt30 funciona mas o desempenho eacute sofriacutevel

bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB

Desempenho do rdt30

Ttransmis

satildeo

= 8 kbpkt109 bs

= 8 microsegL (tamanho do pacote em bits)

R (taxa de transmissatildeo bps)=

Usender=008

30008 = 000027 L RRTT + L R

=

Transport Layer 3-39

rdt30 operaccedilatildeo pare e espere

Transmissatildeo do 1ordm Bit dopacote t = 0

emissor receptor

RTT

Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK

Recebe ACK envia proacuteximopacote t = RTT + L R

U sender

= 008

30008 = 000027

microsec

L R

RTT + L R =

Transport Layer 3-40

Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos

bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada

bull Armazenamento no transmissor eou no receptor

bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

Protocolos com paralelismo (pipelining)

Transport Layer 3-41

Pipelining aumento da utilizaccedilatildeo

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Chegada do primeiro bitChegada do uacuteltimo bit envia ACK

Chegada do ACK envia o proacuteximo pacote t = RTT + L R

U emissor

= 024

30008 = 00008

microsecon

3 L R

RTT + L R =

Aumenta a utilizaccedilatildeopor um fator de 3

Transport Layer 3-42

Protocolos do tipo Pipelining

Go-back-N visatildeo geral Emissor pode enviar ateacute N

pacotes natildeo reconhecidos(unacked) no pipeline

Receptor envia acksacumulativos

Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo

Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido

Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)

Retransmissatildeo seletiva visatildeogeral

Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)

Receptor reconhece (acks) pacotes individuais

Emissor manteacutemtemporizador para cadapacote natildeo reconhecido

Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido

Transport Layer 3-43

Transmissor

bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote

bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos

bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)

bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela

Go-Back-N

Transport Layer 3-44

GBN FSM estendida para o transmissor

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)

Λ

Λ

Transport Layer 3-45

bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum

bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem

GBN FSM estendida para o receptor

Wait

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(0ACKchksum)

Λ

udt_send(sndpkt)

default

Transport Layer 3-46

GBN em accedilatildeo

Transport Layer 3-47

bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior

bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido

bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos

Retransmissatildeo seletiva

Transport Layer 3-48

Retransmissatildeo seletiva janelas do transmissore do receptor

Transport Layer 3-49

TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de

sequumlecircncia disponiacutevel estaacute najanela envia o pacote

Timeout(n)bull Reenvia pacote n restart

timerACK (n) em

[sendbasesendbase+N]bull Marca pacote n como

recebidobull Se n eacute o menor pacote natildeo

reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido

Retransmissatildeo seletiva

RECEPTORPacote n em [rcvbase rcvbase +

N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem

entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido

pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora

Transport Layer 3-50

Retransmissatildeo seletiva em accedilatildeo

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-32

bull Mesma funcionalidade do rdt21 usando somente ACKs

bull Em vez de enviar NAK o receptor envia ACK para o uacuteltimo pacote recebido sem errobull Receptor deve incluir explicitamente o nuacutemero de sequumlecircncia do pacote sendo reconhecido

bull ACKs duplicados no transmissor resultam na mesmaaccedilatildeo do NAK retransmissatildeo do pacote corrente

rdt22 um protocolo sem NAK

Transport Layer 3-33

aguardachamada 0

de cima

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)

aguardaACK

0

fragmento FSMdo transmissor

aguarda

0 de baixo

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento FSMdo receptor

Λ

rdt22 fragmentos do transmissor e do receptor

Transport Layer 3-34

Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante

Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)

bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso

bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido

bull Exige um temporizador decrescente

rdt30 canais com erros e perdas

Transport Layer 3-35

Transmissor rdt30

Transport Layer 3-36

rdt30 em accedilatildeo

Transport Layer 3-37

rdt30 em accedilatildeo

Transport Layer 3-38

bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado

bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps

bull O protocolo de rede limita o uso dos recursos fiacutesicos

bull rdt30 funciona mas o desempenho eacute sofriacutevel

bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB

Desempenho do rdt30

Ttransmis

satildeo

= 8 kbpkt109 bs

= 8 microsegL (tamanho do pacote em bits)

R (taxa de transmissatildeo bps)=

Usender=008

30008 = 000027 L RRTT + L R

=

Transport Layer 3-39

rdt30 operaccedilatildeo pare e espere

Transmissatildeo do 1ordm Bit dopacote t = 0

emissor receptor

RTT

Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK

Recebe ACK envia proacuteximopacote t = RTT + L R

U sender

= 008

30008 = 000027

microsec

L R

RTT + L R =

Transport Layer 3-40

Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos

bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada

bull Armazenamento no transmissor eou no receptor

bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

Protocolos com paralelismo (pipelining)

Transport Layer 3-41

Pipelining aumento da utilizaccedilatildeo

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Chegada do primeiro bitChegada do uacuteltimo bit envia ACK

Chegada do ACK envia o proacuteximo pacote t = RTT + L R

U emissor

= 024

30008 = 00008

microsecon

3 L R

RTT + L R =

Aumenta a utilizaccedilatildeopor um fator de 3

Transport Layer 3-42

Protocolos do tipo Pipelining

Go-back-N visatildeo geral Emissor pode enviar ateacute N

pacotes natildeo reconhecidos(unacked) no pipeline

Receptor envia acksacumulativos

Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo

Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido

Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)

Retransmissatildeo seletiva visatildeogeral

Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)

Receptor reconhece (acks) pacotes individuais

Emissor manteacutemtemporizador para cadapacote natildeo reconhecido

Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido

Transport Layer 3-43

Transmissor

bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote

bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos

bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)

bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela

Go-Back-N

Transport Layer 3-44

GBN FSM estendida para o transmissor

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)

Λ

Λ

Transport Layer 3-45

bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum

bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem

GBN FSM estendida para o receptor

Wait

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(0ACKchksum)

Λ

udt_send(sndpkt)

default

Transport Layer 3-46

GBN em accedilatildeo

Transport Layer 3-47

bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior

bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido

bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos

Retransmissatildeo seletiva

Transport Layer 3-48

Retransmissatildeo seletiva janelas do transmissore do receptor

Transport Layer 3-49

TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de

sequumlecircncia disponiacutevel estaacute najanela envia o pacote

Timeout(n)bull Reenvia pacote n restart

timerACK (n) em

[sendbasesendbase+N]bull Marca pacote n como

recebidobull Se n eacute o menor pacote natildeo

reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido

Retransmissatildeo seletiva

RECEPTORPacote n em [rcvbase rcvbase +

N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem

entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido

pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora

Transport Layer 3-50

Retransmissatildeo seletiva em accedilatildeo

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-33

aguardachamada 0

de cima

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)

aguardaACK

0

fragmento FSMdo transmissor

aguarda

0 de baixo

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt) ampamp has_seq1(rcvpkt)

extract(rcvpktdata)deliver_data(data)sndpkt = make_pkt(ACK1 chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento FSMdo receptor

Λ

rdt22 fragmentos do transmissor e do receptor

Transport Layer 3-34

Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante

Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)

bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso

bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido

bull Exige um temporizador decrescente

rdt30 canais com erros e perdas

Transport Layer 3-35

Transmissor rdt30

Transport Layer 3-36

rdt30 em accedilatildeo

Transport Layer 3-37

rdt30 em accedilatildeo

Transport Layer 3-38

bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado

bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps

bull O protocolo de rede limita o uso dos recursos fiacutesicos

bull rdt30 funciona mas o desempenho eacute sofriacutevel

bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB

Desempenho do rdt30

Ttransmis

satildeo

= 8 kbpkt109 bs

= 8 microsegL (tamanho do pacote em bits)

R (taxa de transmissatildeo bps)=

Usender=008

30008 = 000027 L RRTT + L R

=

Transport Layer 3-39

rdt30 operaccedilatildeo pare e espere

Transmissatildeo do 1ordm Bit dopacote t = 0

emissor receptor

RTT

Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK

Recebe ACK envia proacuteximopacote t = RTT + L R

U sender

= 008

30008 = 000027

microsec

L R

RTT + L R =

Transport Layer 3-40

Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos

bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada

bull Armazenamento no transmissor eou no receptor

bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

Protocolos com paralelismo (pipelining)

Transport Layer 3-41

Pipelining aumento da utilizaccedilatildeo

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Chegada do primeiro bitChegada do uacuteltimo bit envia ACK

Chegada do ACK envia o proacuteximo pacote t = RTT + L R

U emissor

= 024

30008 = 00008

microsecon

3 L R

RTT + L R =

Aumenta a utilizaccedilatildeopor um fator de 3

Transport Layer 3-42

Protocolos do tipo Pipelining

Go-back-N visatildeo geral Emissor pode enviar ateacute N

pacotes natildeo reconhecidos(unacked) no pipeline

Receptor envia acksacumulativos

Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo

Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido

Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)

Retransmissatildeo seletiva visatildeogeral

Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)

Receptor reconhece (acks) pacotes individuais

Emissor manteacutemtemporizador para cadapacote natildeo reconhecido

Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido

Transport Layer 3-43

Transmissor

bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote

bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos

bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)

bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela

Go-Back-N

Transport Layer 3-44

GBN FSM estendida para o transmissor

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)

Λ

Λ

Transport Layer 3-45

bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum

bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem

GBN FSM estendida para o receptor

Wait

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(0ACKchksum)

Λ

udt_send(sndpkt)

default

Transport Layer 3-46

GBN em accedilatildeo

Transport Layer 3-47

bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior

bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido

bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos

Retransmissatildeo seletiva

Transport Layer 3-48

Retransmissatildeo seletiva janelas do transmissore do receptor

Transport Layer 3-49

TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de

sequumlecircncia disponiacutevel estaacute najanela envia o pacote

Timeout(n)bull Reenvia pacote n restart

timerACK (n) em

[sendbasesendbase+N]bull Marca pacote n como

recebidobull Se n eacute o menor pacote natildeo

reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido

Retransmissatildeo seletiva

RECEPTORPacote n em [rcvbase rcvbase +

N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem

entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido

pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora

Transport Layer 3-50

Retransmissatildeo seletiva em accedilatildeo

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-34

Nova hipoacutetese canal de transmissatildeo pode tambeacutem perderpacotes (dados e ACKs)bull Checksum nuacutemeros de sequumlecircncia ACKs retransmissotildees seratildeode ajuda mas natildeo o bastante

Abordagem transmissor espera um tempo ldquorazoaacutevelrdquo pelo ACK bull Retransmite se nenhum ACK for recebido nesse tempobull Se o pacote (ou ACK) estiver apenas atrasado (natildeo perdido)

bull Restransmissatildeo seraacute duplicada mas os nuacutemeros de sequumlecircncia jaacute tratam com isso

bull Receptor deve especificar o nuacutemero de sequumlecircncia do pacote reconhecido

bull Exige um temporizador decrescente

rdt30 canais com erros e perdas

Transport Layer 3-35

Transmissor rdt30

Transport Layer 3-36

rdt30 em accedilatildeo

Transport Layer 3-37

rdt30 em accedilatildeo

Transport Layer 3-38

bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado

bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps

bull O protocolo de rede limita o uso dos recursos fiacutesicos

bull rdt30 funciona mas o desempenho eacute sofriacutevel

bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB

Desempenho do rdt30

Ttransmis

satildeo

= 8 kbpkt109 bs

= 8 microsegL (tamanho do pacote em bits)

R (taxa de transmissatildeo bps)=

Usender=008

30008 = 000027 L RRTT + L R

=

Transport Layer 3-39

rdt30 operaccedilatildeo pare e espere

Transmissatildeo do 1ordm Bit dopacote t = 0

emissor receptor

RTT

Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK

Recebe ACK envia proacuteximopacote t = RTT + L R

U sender

= 008

30008 = 000027

microsec

L R

RTT + L R =

Transport Layer 3-40

Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos

bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada

bull Armazenamento no transmissor eou no receptor

bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

Protocolos com paralelismo (pipelining)

Transport Layer 3-41

Pipelining aumento da utilizaccedilatildeo

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Chegada do primeiro bitChegada do uacuteltimo bit envia ACK

Chegada do ACK envia o proacuteximo pacote t = RTT + L R

U emissor

= 024

30008 = 00008

microsecon

3 L R

RTT + L R =

Aumenta a utilizaccedilatildeopor um fator de 3

Transport Layer 3-42

Protocolos do tipo Pipelining

Go-back-N visatildeo geral Emissor pode enviar ateacute N

pacotes natildeo reconhecidos(unacked) no pipeline

Receptor envia acksacumulativos

Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo

Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido

Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)

Retransmissatildeo seletiva visatildeogeral

Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)

Receptor reconhece (acks) pacotes individuais

Emissor manteacutemtemporizador para cadapacote natildeo reconhecido

Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido

Transport Layer 3-43

Transmissor

bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote

bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos

bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)

bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela

Go-Back-N

Transport Layer 3-44

GBN FSM estendida para o transmissor

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)

Λ

Λ

Transport Layer 3-45

bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum

bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem

GBN FSM estendida para o receptor

Wait

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(0ACKchksum)

Λ

udt_send(sndpkt)

default

Transport Layer 3-46

GBN em accedilatildeo

Transport Layer 3-47

bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior

bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido

bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos

Retransmissatildeo seletiva

Transport Layer 3-48

Retransmissatildeo seletiva janelas do transmissore do receptor

Transport Layer 3-49

TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de

sequumlecircncia disponiacutevel estaacute najanela envia o pacote

Timeout(n)bull Reenvia pacote n restart

timerACK (n) em

[sendbasesendbase+N]bull Marca pacote n como

recebidobull Se n eacute o menor pacote natildeo

reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido

Retransmissatildeo seletiva

RECEPTORPacote n em [rcvbase rcvbase +

N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem

entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido

pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora

Transport Layer 3-50

Retransmissatildeo seletiva em accedilatildeo

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-35

Transmissor rdt30

Transport Layer 3-36

rdt30 em accedilatildeo

Transport Layer 3-37

rdt30 em accedilatildeo

Transport Layer 3-38

bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado

bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps

bull O protocolo de rede limita o uso dos recursos fiacutesicos

bull rdt30 funciona mas o desempenho eacute sofriacutevel

bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB

Desempenho do rdt30

Ttransmis

satildeo

= 8 kbpkt109 bs

= 8 microsegL (tamanho do pacote em bits)

R (taxa de transmissatildeo bps)=

Usender=008

30008 = 000027 L RRTT + L R

=

Transport Layer 3-39

rdt30 operaccedilatildeo pare e espere

Transmissatildeo do 1ordm Bit dopacote t = 0

emissor receptor

RTT

Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK

Recebe ACK envia proacuteximopacote t = RTT + L R

U sender

= 008

30008 = 000027

microsec

L R

RTT + L R =

Transport Layer 3-40

Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos

bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada

bull Armazenamento no transmissor eou no receptor

bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

Protocolos com paralelismo (pipelining)

Transport Layer 3-41

Pipelining aumento da utilizaccedilatildeo

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Chegada do primeiro bitChegada do uacuteltimo bit envia ACK

Chegada do ACK envia o proacuteximo pacote t = RTT + L R

U emissor

= 024

30008 = 00008

microsecon

3 L R

RTT + L R =

Aumenta a utilizaccedilatildeopor um fator de 3

Transport Layer 3-42

Protocolos do tipo Pipelining

Go-back-N visatildeo geral Emissor pode enviar ateacute N

pacotes natildeo reconhecidos(unacked) no pipeline

Receptor envia acksacumulativos

Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo

Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido

Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)

Retransmissatildeo seletiva visatildeogeral

Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)

Receptor reconhece (acks) pacotes individuais

Emissor manteacutemtemporizador para cadapacote natildeo reconhecido

Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido

Transport Layer 3-43

Transmissor

bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote

bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos

bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)

bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela

Go-Back-N

Transport Layer 3-44

GBN FSM estendida para o transmissor

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)

Λ

Λ

Transport Layer 3-45

bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum

bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem

GBN FSM estendida para o receptor

Wait

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(0ACKchksum)

Λ

udt_send(sndpkt)

default

Transport Layer 3-46

GBN em accedilatildeo

Transport Layer 3-47

bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior

bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido

bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos

Retransmissatildeo seletiva

Transport Layer 3-48

Retransmissatildeo seletiva janelas do transmissore do receptor

Transport Layer 3-49

TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de

sequumlecircncia disponiacutevel estaacute najanela envia o pacote

Timeout(n)bull Reenvia pacote n restart

timerACK (n) em

[sendbasesendbase+N]bull Marca pacote n como

recebidobull Se n eacute o menor pacote natildeo

reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido

Retransmissatildeo seletiva

RECEPTORPacote n em [rcvbase rcvbase +

N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem

entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido

pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora

Transport Layer 3-50

Retransmissatildeo seletiva em accedilatildeo

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-36

rdt30 em accedilatildeo

Transport Layer 3-37

rdt30 em accedilatildeo

Transport Layer 3-38

bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado

bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps

bull O protocolo de rede limita o uso dos recursos fiacutesicos

bull rdt30 funciona mas o desempenho eacute sofriacutevel

bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB

Desempenho do rdt30

Ttransmis

satildeo

= 8 kbpkt109 bs

= 8 microsegL (tamanho do pacote em bits)

R (taxa de transmissatildeo bps)=

Usender=008

30008 = 000027 L RRTT + L R

=

Transport Layer 3-39

rdt30 operaccedilatildeo pare e espere

Transmissatildeo do 1ordm Bit dopacote t = 0

emissor receptor

RTT

Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK

Recebe ACK envia proacuteximopacote t = RTT + L R

U sender

= 008

30008 = 000027

microsec

L R

RTT + L R =

Transport Layer 3-40

Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos

bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada

bull Armazenamento no transmissor eou no receptor

bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

Protocolos com paralelismo (pipelining)

Transport Layer 3-41

Pipelining aumento da utilizaccedilatildeo

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Chegada do primeiro bitChegada do uacuteltimo bit envia ACK

Chegada do ACK envia o proacuteximo pacote t = RTT + L R

U emissor

= 024

30008 = 00008

microsecon

3 L R

RTT + L R =

Aumenta a utilizaccedilatildeopor um fator de 3

Transport Layer 3-42

Protocolos do tipo Pipelining

Go-back-N visatildeo geral Emissor pode enviar ateacute N

pacotes natildeo reconhecidos(unacked) no pipeline

Receptor envia acksacumulativos

Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo

Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido

Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)

Retransmissatildeo seletiva visatildeogeral

Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)

Receptor reconhece (acks) pacotes individuais

Emissor manteacutemtemporizador para cadapacote natildeo reconhecido

Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido

Transport Layer 3-43

Transmissor

bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote

bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos

bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)

bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela

Go-Back-N

Transport Layer 3-44

GBN FSM estendida para o transmissor

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)

Λ

Λ

Transport Layer 3-45

bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum

bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem

GBN FSM estendida para o receptor

Wait

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(0ACKchksum)

Λ

udt_send(sndpkt)

default

Transport Layer 3-46

GBN em accedilatildeo

Transport Layer 3-47

bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior

bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido

bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos

Retransmissatildeo seletiva

Transport Layer 3-48

Retransmissatildeo seletiva janelas do transmissore do receptor

Transport Layer 3-49

TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de

sequumlecircncia disponiacutevel estaacute najanela envia o pacote

Timeout(n)bull Reenvia pacote n restart

timerACK (n) em

[sendbasesendbase+N]bull Marca pacote n como

recebidobull Se n eacute o menor pacote natildeo

reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido

Retransmissatildeo seletiva

RECEPTORPacote n em [rcvbase rcvbase +

N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem

entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido

pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora

Transport Layer 3-50

Retransmissatildeo seletiva em accedilatildeo

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-37

rdt30 em accedilatildeo

Transport Layer 3-38

bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado

bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps

bull O protocolo de rede limita o uso dos recursos fiacutesicos

bull rdt30 funciona mas o desempenho eacute sofriacutevel

bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB

Desempenho do rdt30

Ttransmis

satildeo

= 8 kbpkt109 bs

= 8 microsegL (tamanho do pacote em bits)

R (taxa de transmissatildeo bps)=

Usender=008

30008 = 000027 L RRTT + L R

=

Transport Layer 3-39

rdt30 operaccedilatildeo pare e espere

Transmissatildeo do 1ordm Bit dopacote t = 0

emissor receptor

RTT

Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK

Recebe ACK envia proacuteximopacote t = RTT + L R

U sender

= 008

30008 = 000027

microsec

L R

RTT + L R =

Transport Layer 3-40

Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos

bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada

bull Armazenamento no transmissor eou no receptor

bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

Protocolos com paralelismo (pipelining)

Transport Layer 3-41

Pipelining aumento da utilizaccedilatildeo

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Chegada do primeiro bitChegada do uacuteltimo bit envia ACK

Chegada do ACK envia o proacuteximo pacote t = RTT + L R

U emissor

= 024

30008 = 00008

microsecon

3 L R

RTT + L R =

Aumenta a utilizaccedilatildeopor um fator de 3

Transport Layer 3-42

Protocolos do tipo Pipelining

Go-back-N visatildeo geral Emissor pode enviar ateacute N

pacotes natildeo reconhecidos(unacked) no pipeline

Receptor envia acksacumulativos

Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo

Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido

Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)

Retransmissatildeo seletiva visatildeogeral

Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)

Receptor reconhece (acks) pacotes individuais

Emissor manteacutemtemporizador para cadapacote natildeo reconhecido

Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido

Transport Layer 3-43

Transmissor

bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote

bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos

bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)

bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela

Go-Back-N

Transport Layer 3-44

GBN FSM estendida para o transmissor

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)

Λ

Λ

Transport Layer 3-45

bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum

bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem

GBN FSM estendida para o receptor

Wait

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(0ACKchksum)

Λ

udt_send(sndpkt)

default

Transport Layer 3-46

GBN em accedilatildeo

Transport Layer 3-47

bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior

bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido

bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos

Retransmissatildeo seletiva

Transport Layer 3-48

Retransmissatildeo seletiva janelas do transmissore do receptor

Transport Layer 3-49

TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de

sequumlecircncia disponiacutevel estaacute najanela envia o pacote

Timeout(n)bull Reenvia pacote n restart

timerACK (n) em

[sendbasesendbase+N]bull Marca pacote n como

recebidobull Se n eacute o menor pacote natildeo

reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido

Retransmissatildeo seletiva

RECEPTORPacote n em [rcvbase rcvbase +

N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem

entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido

pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora

Transport Layer 3-50

Retransmissatildeo seletiva em accedilatildeo

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-38

bull U sender utilizaccedilatildeo ndash fraccedilatildeo de tempo do transmissor ocupado

bull Um pacote de 1 KB cada 30 ms -gt 33 kBs de vazatildeo sobre um canal de 1 Gbps

bull O protocolo de rede limita o uso dos recursos fiacutesicos

bull rdt30 funciona mas o desempenho eacute sofriacutevel

bull Exemplo enlace de 1 Gbps 15 ms de atraso de propagaccedilatildeo pacotes de 1 KB

Desempenho do rdt30

Ttransmis

satildeo

= 8 kbpkt109 bs

= 8 microsegL (tamanho do pacote em bits)

R (taxa de transmissatildeo bps)=

Usender=008

30008 = 000027 L RRTT + L R

=

Transport Layer 3-39

rdt30 operaccedilatildeo pare e espere

Transmissatildeo do 1ordm Bit dopacote t = 0

emissor receptor

RTT

Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK

Recebe ACK envia proacuteximopacote t = RTT + L R

U sender

= 008

30008 = 000027

microsec

L R

RTT + L R =

Transport Layer 3-40

Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos

bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada

bull Armazenamento no transmissor eou no receptor

bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

Protocolos com paralelismo (pipelining)

Transport Layer 3-41

Pipelining aumento da utilizaccedilatildeo

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Chegada do primeiro bitChegada do uacuteltimo bit envia ACK

Chegada do ACK envia o proacuteximo pacote t = RTT + L R

U emissor

= 024

30008 = 00008

microsecon

3 L R

RTT + L R =

Aumenta a utilizaccedilatildeopor um fator de 3

Transport Layer 3-42

Protocolos do tipo Pipelining

Go-back-N visatildeo geral Emissor pode enviar ateacute N

pacotes natildeo reconhecidos(unacked) no pipeline

Receptor envia acksacumulativos

Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo

Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido

Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)

Retransmissatildeo seletiva visatildeogeral

Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)

Receptor reconhece (acks) pacotes individuais

Emissor manteacutemtemporizador para cadapacote natildeo reconhecido

Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido

Transport Layer 3-43

Transmissor

bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote

bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos

bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)

bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela

Go-Back-N

Transport Layer 3-44

GBN FSM estendida para o transmissor

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)

Λ

Λ

Transport Layer 3-45

bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum

bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem

GBN FSM estendida para o receptor

Wait

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(0ACKchksum)

Λ

udt_send(sndpkt)

default

Transport Layer 3-46

GBN em accedilatildeo

Transport Layer 3-47

bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior

bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido

bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos

Retransmissatildeo seletiva

Transport Layer 3-48

Retransmissatildeo seletiva janelas do transmissore do receptor

Transport Layer 3-49

TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de

sequumlecircncia disponiacutevel estaacute najanela envia o pacote

Timeout(n)bull Reenvia pacote n restart

timerACK (n) em

[sendbasesendbase+N]bull Marca pacote n como

recebidobull Se n eacute o menor pacote natildeo

reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido

Retransmissatildeo seletiva

RECEPTORPacote n em [rcvbase rcvbase +

N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem

entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido

pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora

Transport Layer 3-50

Retransmissatildeo seletiva em accedilatildeo

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-39

rdt30 operaccedilatildeo pare e espere

Transmissatildeo do 1ordm Bit dopacote t = 0

emissor receptor

RTT

Chegada do primeiro bit do pacoteChegada do uacuteltimo bit do pacote envia ACK

Recebe ACK envia proacuteximopacote t = RTT + L R

U sender

= 008

30008 = 000027

microsec

L R

RTT + L R =

Transport Layer 3-40

Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos

bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada

bull Armazenamento no transmissor eou no receptor

bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

Protocolos com paralelismo (pipelining)

Transport Layer 3-41

Pipelining aumento da utilizaccedilatildeo

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Chegada do primeiro bitChegada do uacuteltimo bit envia ACK

Chegada do ACK envia o proacuteximo pacote t = RTT + L R

U emissor

= 024

30008 = 00008

microsecon

3 L R

RTT + L R =

Aumenta a utilizaccedilatildeopor um fator de 3

Transport Layer 3-42

Protocolos do tipo Pipelining

Go-back-N visatildeo geral Emissor pode enviar ateacute N

pacotes natildeo reconhecidos(unacked) no pipeline

Receptor envia acksacumulativos

Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo

Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido

Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)

Retransmissatildeo seletiva visatildeogeral

Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)

Receptor reconhece (acks) pacotes individuais

Emissor manteacutemtemporizador para cadapacote natildeo reconhecido

Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido

Transport Layer 3-43

Transmissor

bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote

bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos

bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)

bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela

Go-Back-N

Transport Layer 3-44

GBN FSM estendida para o transmissor

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)

Λ

Λ

Transport Layer 3-45

bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum

bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem

GBN FSM estendida para o receptor

Wait

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(0ACKchksum)

Λ

udt_send(sndpkt)

default

Transport Layer 3-46

GBN em accedilatildeo

Transport Layer 3-47

bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior

bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido

bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos

Retransmissatildeo seletiva

Transport Layer 3-48

Retransmissatildeo seletiva janelas do transmissore do receptor

Transport Layer 3-49

TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de

sequumlecircncia disponiacutevel estaacute najanela envia o pacote

Timeout(n)bull Reenvia pacote n restart

timerACK (n) em

[sendbasesendbase+N]bull Marca pacote n como

recebidobull Se n eacute o menor pacote natildeo

reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido

Retransmissatildeo seletiva

RECEPTORPacote n em [rcvbase rcvbase +

N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem

entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido

pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora

Transport Layer 3-50

Retransmissatildeo seletiva em accedilatildeo

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-40

Pipelining transmissor envia vaacuterios pacotes ao mesmotempo todos esperando para serem reconhecidos

bull Faixa de nuacutemeros de sequumlecircncia deve ser aumentada

bull Armazenamento no transmissor eou no receptor

bull Duas formas geneacutericas de protocolos com paralelismo go-Back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

Protocolos com paralelismo (pipelining)

Transport Layer 3-41

Pipelining aumento da utilizaccedilatildeo

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Chegada do primeiro bitChegada do uacuteltimo bit envia ACK

Chegada do ACK envia o proacuteximo pacote t = RTT + L R

U emissor

= 024

30008 = 00008

microsecon

3 L R

RTT + L R =

Aumenta a utilizaccedilatildeopor um fator de 3

Transport Layer 3-42

Protocolos do tipo Pipelining

Go-back-N visatildeo geral Emissor pode enviar ateacute N

pacotes natildeo reconhecidos(unacked) no pipeline

Receptor envia acksacumulativos

Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo

Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido

Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)

Retransmissatildeo seletiva visatildeogeral

Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)

Receptor reconhece (acks) pacotes individuais

Emissor manteacutemtemporizador para cadapacote natildeo reconhecido

Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido

Transport Layer 3-43

Transmissor

bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote

bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos

bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)

bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela

Go-Back-N

Transport Layer 3-44

GBN FSM estendida para o transmissor

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)

Λ

Λ

Transport Layer 3-45

bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum

bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem

GBN FSM estendida para o receptor

Wait

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(0ACKchksum)

Λ

udt_send(sndpkt)

default

Transport Layer 3-46

GBN em accedilatildeo

Transport Layer 3-47

bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior

bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido

bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos

Retransmissatildeo seletiva

Transport Layer 3-48

Retransmissatildeo seletiva janelas do transmissore do receptor

Transport Layer 3-49

TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de

sequumlecircncia disponiacutevel estaacute najanela envia o pacote

Timeout(n)bull Reenvia pacote n restart

timerACK (n) em

[sendbasesendbase+N]bull Marca pacote n como

recebidobull Se n eacute o menor pacote natildeo

reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido

Retransmissatildeo seletiva

RECEPTORPacote n em [rcvbase rcvbase +

N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem

entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido

pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora

Transport Layer 3-50

Retransmissatildeo seletiva em accedilatildeo

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-41

Pipelining aumento da utilizaccedilatildeo

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Chegada do primeiro bitChegada do uacuteltimo bit envia ACK

Chegada do ACK envia o proacuteximo pacote t = RTT + L R

U emissor

= 024

30008 = 00008

microsecon

3 L R

RTT + L R =

Aumenta a utilizaccedilatildeopor um fator de 3

Transport Layer 3-42

Protocolos do tipo Pipelining

Go-back-N visatildeo geral Emissor pode enviar ateacute N

pacotes natildeo reconhecidos(unacked) no pipeline

Receptor envia acksacumulativos

Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo

Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido

Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)

Retransmissatildeo seletiva visatildeogeral

Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)

Receptor reconhece (acks) pacotes individuais

Emissor manteacutemtemporizador para cadapacote natildeo reconhecido

Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido

Transport Layer 3-43

Transmissor

bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote

bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos

bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)

bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela

Go-Back-N

Transport Layer 3-44

GBN FSM estendida para o transmissor

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)

Λ

Λ

Transport Layer 3-45

bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum

bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem

GBN FSM estendida para o receptor

Wait

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(0ACKchksum)

Λ

udt_send(sndpkt)

default

Transport Layer 3-46

GBN em accedilatildeo

Transport Layer 3-47

bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior

bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido

bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos

Retransmissatildeo seletiva

Transport Layer 3-48

Retransmissatildeo seletiva janelas do transmissore do receptor

Transport Layer 3-49

TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de

sequumlecircncia disponiacutevel estaacute najanela envia o pacote

Timeout(n)bull Reenvia pacote n restart

timerACK (n) em

[sendbasesendbase+N]bull Marca pacote n como

recebidobull Se n eacute o menor pacote natildeo

reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido

Retransmissatildeo seletiva

RECEPTORPacote n em [rcvbase rcvbase +

N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem

entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido

pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora

Transport Layer 3-50

Retransmissatildeo seletiva em accedilatildeo

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-42

Protocolos do tipo Pipelining

Go-back-N visatildeo geral Emissor pode enviar ateacute N

pacotes natildeo reconhecidos(unacked) no pipeline

Receptor envia acksacumulativos

Natildeo reconhece (ack) pacotesse existe um ldquogaprdquo

Emissor possui um temporizador para o pacotemais antigo natildeo reconhecido

Se o temporizador expira retransmite todos ospacotes natildeo reconhecidos(unacked)

Retransmissatildeo seletiva visatildeogeral

Emissor pode ter ateacute N pacotes natildeo reconhecidos(unacked) no tubo (pipeline)

Receptor reconhece (acks) pacotes individuais

Emissor manteacutemtemporizador para cadapacote natildeo reconhecido

Quando o temporizadorexpira retransmitesomente o pacote natildeoreconhecido

Transport Layer 3-43

Transmissor

bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote

bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos

bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)

bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela

Go-Back-N

Transport Layer 3-44

GBN FSM estendida para o transmissor

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)

Λ

Λ

Transport Layer 3-45

bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum

bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem

GBN FSM estendida para o receptor

Wait

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(0ACKchksum)

Λ

udt_send(sndpkt)

default

Transport Layer 3-46

GBN em accedilatildeo

Transport Layer 3-47

bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior

bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido

bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos

Retransmissatildeo seletiva

Transport Layer 3-48

Retransmissatildeo seletiva janelas do transmissore do receptor

Transport Layer 3-49

TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de

sequumlecircncia disponiacutevel estaacute najanela envia o pacote

Timeout(n)bull Reenvia pacote n restart

timerACK (n) em

[sendbasesendbase+N]bull Marca pacote n como

recebidobull Se n eacute o menor pacote natildeo

reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido

Retransmissatildeo seletiva

RECEPTORPacote n em [rcvbase rcvbase +

N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem

entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido

pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora

Transport Layer 3-50

Retransmissatildeo seletiva em accedilatildeo

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-43

Transmissor

bull Nuacutemero de sequumlecircncia com k bits no cabeccedilalho do pacote

bull ldquojanelardquo de ateacute N pacotes natildeo reconhecidos consecutivos satildeo permitidos

bull ACK(n) reconhece todos os pacotes ateacute o nuacutemero de sequumlecircncia N (incluindo este limite) ldquoACK acumulativordquobull Pode receber ACKs duplicados (veja receptor)

bull Tempo de confirmaccedilatildeo (n) retransmite pacote n e todos os pacotescom nuacutemero de sequumlecircncia maior que estejam dentro da janela

Go-Back-N

Transport Layer 3-44

GBN FSM estendida para o transmissor

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)

Λ

Λ

Transport Layer 3-45

bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum

bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem

GBN FSM estendida para o receptor

Wait

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(0ACKchksum)

Λ

udt_send(sndpkt)

default

Transport Layer 3-46

GBN em accedilatildeo

Transport Layer 3-47

bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior

bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido

bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos

Retransmissatildeo seletiva

Transport Layer 3-48

Retransmissatildeo seletiva janelas do transmissore do receptor

Transport Layer 3-49

TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de

sequumlecircncia disponiacutevel estaacute najanela envia o pacote

Timeout(n)bull Reenvia pacote n restart

timerACK (n) em

[sendbasesendbase+N]bull Marca pacote n como

recebidobull Se n eacute o menor pacote natildeo

reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido

Retransmissatildeo seletiva

RECEPTORPacote n em [rcvbase rcvbase +

N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem

entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido

pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora

Transport Layer 3-50

Retransmissatildeo seletiva em accedilatildeo

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-44

GBN FSM estendida para o transmissor

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)

Λ

Λ

Transport Layer 3-45

bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum

bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem

GBN FSM estendida para o receptor

Wait

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(0ACKchksum)

Λ

udt_send(sndpkt)

default

Transport Layer 3-46

GBN em accedilatildeo

Transport Layer 3-47

bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior

bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido

bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos

Retransmissatildeo seletiva

Transport Layer 3-48

Retransmissatildeo seletiva janelas do transmissore do receptor

Transport Layer 3-49

TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de

sequumlecircncia disponiacutevel estaacute najanela envia o pacote

Timeout(n)bull Reenvia pacote n restart

timerACK (n) em

[sendbasesendbase+N]bull Marca pacote n como

recebidobull Se n eacute o menor pacote natildeo

reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido

Retransmissatildeo seletiva

RECEPTORPacote n em [rcvbase rcvbase +

N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem

entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido

pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora

Transport Layer 3-50

Retransmissatildeo seletiva em accedilatildeo

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-45

bull Somente ACK sempre envia ACK para pacotes corretamente recebidoscom o mais alto nuacutemero de sequumlecircncia em ordembull Pode gerar ACKs duplicadosbull Precisa lembrar apenas do expectedseqnum

bull Pacotes fora de ordem bull Descarta (natildeo armazena) -gt natildeo haacute buffer de recepccedilatildeobull Reconhece pacote com o mais alto nuacutemero de sequumlecircncia em ordem

GBN FSM estendida para o receptor

Wait

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(0ACKchksum)

Λ

udt_send(sndpkt)

default

Transport Layer 3-46

GBN em accedilatildeo

Transport Layer 3-47

bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior

bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido

bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos

Retransmissatildeo seletiva

Transport Layer 3-48

Retransmissatildeo seletiva janelas do transmissore do receptor

Transport Layer 3-49

TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de

sequumlecircncia disponiacutevel estaacute najanela envia o pacote

Timeout(n)bull Reenvia pacote n restart

timerACK (n) em

[sendbasesendbase+N]bull Marca pacote n como

recebidobull Se n eacute o menor pacote natildeo

reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido

Retransmissatildeo seletiva

RECEPTORPacote n em [rcvbase rcvbase +

N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem

entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido

pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora

Transport Layer 3-50

Retransmissatildeo seletiva em accedilatildeo

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-46

GBN em accedilatildeo

Transport Layer 3-47

bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior

bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido

bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos

Retransmissatildeo seletiva

Transport Layer 3-48

Retransmissatildeo seletiva janelas do transmissore do receptor

Transport Layer 3-49

TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de

sequumlecircncia disponiacutevel estaacute najanela envia o pacote

Timeout(n)bull Reenvia pacote n restart

timerACK (n) em

[sendbasesendbase+N]bull Marca pacote n como

recebidobull Se n eacute o menor pacote natildeo

reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido

Retransmissatildeo seletiva

RECEPTORPacote n em [rcvbase rcvbase +

N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem

entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido

pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora

Transport Layer 3-50

Retransmissatildeo seletiva em accedilatildeo

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-47

bull Receptor reconhece individualmente todos os pacotesrecebidos corretamentebull Armazena pacotes quando necessaacuterio para eventual entregaem ordem para a camada superior

bull Transmissor somente reenvia os pacotes para os quais um ACK natildeo foi recebidobull Transmissor temporiza cada pacote natildeo reconhecido

bull Janela de transmissatildeobull N nuacutemeros de sequumlecircncia consecutivosbull Novamente limita a quantidade de pacotes enviados mas natildeoreconhecidos

Retransmissatildeo seletiva

Transport Layer 3-48

Retransmissatildeo seletiva janelas do transmissore do receptor

Transport Layer 3-49

TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de

sequumlecircncia disponiacutevel estaacute najanela envia o pacote

Timeout(n)bull Reenvia pacote n restart

timerACK (n) em

[sendbasesendbase+N]bull Marca pacote n como

recebidobull Se n eacute o menor pacote natildeo

reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido

Retransmissatildeo seletiva

RECEPTORPacote n em [rcvbase rcvbase +

N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem

entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido

pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora

Transport Layer 3-50

Retransmissatildeo seletiva em accedilatildeo

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-48

Retransmissatildeo seletiva janelas do transmissore do receptor

Transport Layer 3-49

TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de

sequumlecircncia disponiacutevel estaacute najanela envia o pacote

Timeout(n)bull Reenvia pacote n restart

timerACK (n) em

[sendbasesendbase+N]bull Marca pacote n como

recebidobull Se n eacute o menor pacote natildeo

reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido

Retransmissatildeo seletiva

RECEPTORPacote n em [rcvbase rcvbase +

N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem

entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido

pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora

Transport Layer 3-50

Retransmissatildeo seletiva em accedilatildeo

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-49

TRANSMISSORDados da camada superiorbull Se o proacuteximo nuacutemero de

sequumlecircncia disponiacutevel estaacute najanela envia o pacote

Timeout(n)bull Reenvia pacote n restart

timerACK (n) em

[sendbasesendbase+N]bull Marca pacote n como

recebidobull Se n eacute o menor pacote natildeo

reconhecido avanccedila a base da janela para o proacuteximonuacutemero de sequumlecircncia natildeoreconhecido

Retransmissatildeo seletiva

RECEPTORPacote n em [rcvbase rcvbase +

N -1]bull Envia ACK(n)bull Fora de ordem armazenabull Em ordem entrega (tambeacutem

entrega pacotes armazenadosem ordem) avanccedila janela parao proacuteximo pacote ainda natildeorecebido

pkt n em [rcvbase-Nrcvbase-1]bull ACK(n)Caso contraacuteriobull Ignora

Transport Layer 3-50

Retransmissatildeo seletiva em accedilatildeo

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-50

Retransmissatildeo seletiva em accedilatildeo

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-51

Exemplo bull Sequumlecircncias 0 1 2 3

bull Tamanho da janela = 3

bull Receptor natildeo vecircdiferenccedila nos doiscenaacuterios

bull Incorretamente passadados duplicados comonovos (figura a)

P Qual a relaccedilatildeo entre o espaccedilo de numeraccedilatildeosequumlencial e o tamanhoda janela

Retransmissatildeoseletiva dilema

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-52

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-53

TCP Visatildeo Geral RFCs 793 1122 1323 2018

2581 Dado full duplex

Fluxo de dados bi-direcional na mesmaconexatildeo

MSS maximum segment size

Orientado a conexatildeo handshaking (troca de

mensagens de controle) inicia os estados do emissore do receptor antes datroca de dados

Fluxo controlado O emissor natildeo esgota a

capacidade do receptor

Ponto-a-ponto um emissor um receptor

Confiaacutevel fluxo de bytes emsequecircncia

Natildeo haacute delimitaccedilatildeo de mensagem(ldquomessage boundariesrdquo)

pipelined Controle de congestionamento e de

fluxo no TCP definem o tamanho dajanela

Buffers de transmissatildeo amp derecepccedilatildeo

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-54

Estrutura do Segmento TCP

source port dest port

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

Receive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG dado urgente(generalmente natildeo usado)

ACKnuacutemero deACK vaacutelido

PSH forccedila a entregado dado (geralmente natildeousado)

RST SYN FIN(comandos de

estabelecimentoencerramento e

reiniacutecio de conexatildeo

nuacutemero de bytes o receptor estaacutepronto paraaceitar

Contagem dosBytes de dados(natildeo de segmentos)

checksum(como no UDP)

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-55

rsquos de sequecircncia do TCP e dosACKs

rsquos de sequecircncia

Nuacutemero do primeirobyte nos segmentos de dados

ACKs

Nuacutemero de sequecircnciado proacuteximo byte esperado do outro lado

ACK acumulativo

Q Como o receptor manipulaos segmentos fora de ordem

R a especificaccedilatildeo TCP deixa a criteacuterio daimplementaccedilatildeo

Host A Host B

Seq=42 ACK=79 dado = lsquoCrsquo

Seq=79 ACK=43 dado = lsquoCrsquo

Seq=43 ACK=80

Usuaacuteriotecla

lsquoCrsquo

Host reconhecea recepccedilatildeo do

lsquoCrsquo ecoado

Host reconhecea recepccedilatildeo dolsquoCrsquo e ecoa lsquoCrsquo

timeCenaacuterio Telnet simplificado

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-56

TCP Round Trip Time (RTT) e Timeout

Q Como definir o valor de timeout para o TCP

Maior do que o RTT entretanto o RTT

varia

Muito pequeno timeout prematuro

Retransmissotildeesdesnecessaacuterias

Muito grande reaccedilatildeolenta agrave perda de segmento

Q Como estimar o RTT SampleRTT tempo medido entre

a transmissatildeo do segmento e a recepccedilatildeo do ACK

Ignora as retransmissotildees

SampleRTT possui alta variaccedilatildeo amortecimento do RTT estimado

Utilizar vaacuterias medidasrecentes e natildeo somente o SampleRTT atual

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-57

TCP Round Trip Time e Timeout (cont)EstimatedRTT = (1- αααα)EstimatedRTT + ααααSampleRTT

Meacutedia moacutevel com peso exponencial

Influecircncia das amostras do passado decrescemexponencialmente

Valor tiacutepico para αααα = 0125

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-58

Exemplo de estimaccedilatildeo do 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)

RT

T (

mil

lisec

on

ds)

SampleRTT Estimated RTT

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-59

TCP Round Trip Time e Timeout

Definiccedilatildeo da temporizaccedilatildeo EstimatedRTT mais margem de seguranccedila

Grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

Primeiro estima quanto o SampleRTT desvia-se de EstimatedRTT

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-ββββ)DevRTT +ββββ|SampleRTT-EstimatedRTT|

(tipicamente ββββ = 025)

Ajuste do intervalo de temporizaccedilatildeo

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-60

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-61

TCP Transferecircncia confiaacutevel de dados

TCP cria serviccedilos de rdt em cima do serviccedilonatildeo-confiaacutevel do IP

Pipelined segments

ACKs acumulativos

TCP usa tempo de retransmissatildeo simples

Retransmissotildees satildeodiparadas por timeout ACKs duplicados

Inicialmente considere um transmissor TCP simplificado Ignore ACKs duplicados Ignore controle de fluxo

controle de congestionamento

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-62

TCP eventos do transmissor

Dado recebido da app

Crie um segmento com nuacutemero de sequumlecircncia

seq eacute o nuacutemero do byte-stream do 1o byte de dados no segmento

Inicie o temporizador se eleainda natildeo estiver emexecuccedilatildeo (pense no temporizador para o maisantigo segmento natildeo-confirmado)

Tempo de expiraccedilatildeo TimeOutInterval

Tempo de confirmaccedilatildeo(timeout)

Retransmite o segmento queprovocou o tempo de confirmaccedilatildeo

Reinicia o temporizadorAck rcvd Quando houver o ACK de

segmentos anteriormente natildeoconfirmados

Atualizar o que foiconfirmado

Iniciar o temporizador se houver segmentos pendentes

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-63

TCP transmis-sor(simplificado)

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

loop (forever) switch(event)

event data received from application above create TCP segment with sequence number NextSeqNumif (timer currently not running)

start timerpass segment to IP NextSeqNum = NextSeqNum + length(data)

event timer timeoutretransmit not-yet-acknowledged segment with

smallest sequence numberstart timer

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

end of loop forever

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-64

TCP cenaacuterios de retransmissatildeo

Host A

Seq=100 20 bytes data

ACK=100

tempoTimeout prematuro

Host B

Seq=92 8 bytes data

ACK=120

Seq=92 8 bytes data

Seq

=92

tim

eout

ACK=120

Host A

Seq=92 8 bytes data

ACK=100

perdido

tim

eout

ACK perdido

Host B

X

Seq=92 8 bytes data

ACK=100

tempoS

eq=9

2 t

imeo

ut

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-65

TCP cenaacuterios de retransmissatildeo (cont)

Host A

Seq=92 8 bytes data

ACK=100

loss

tim

eout

ACK acumulativo

Host B

X

Seq=100 20 bytes data

ACK=120

time

SendBase= 120

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-66

TCP Geraccedilatildeo de ACK [RFC 1122 RFC 2581]

Evento no receptor

Segmento chega em ordem natildeo haacute lacunassegmentos anteriores jaacute aceitos

Segmento chega em ordem natildeo haacute lacunasum ACK atrasado pendente

Segmento chega fora de ordemnuacutemero de sequumlecircncia chegoumaior gap detectado

Chegada de segmento queparcial ou completamentepreenche o gap

Accedilatildeo do receptor TCP

ACK retardado Espera ateacute 500 mspelo proacuteximo segmento Se natildeochegarenvia ACK

Imediatamente envia um ACKacumulativo

Envia ACK duplicado indicando nuacutemerode sequumlecircncia do proacuteximo byte esperado

Reconhece imediatamente se o Segmento comeccedila na bordainferior do gap

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-67

Retransmissatildeo Raacutepida

Com frequumlecircncia o tempo de expiraccedilatildeo eacuterelativamente longo

Longo atraso antes de reenviar um pacoteperdido

Detecta segmentosperdidos por meio de ACKs duplicados

Transmissorfrequumlentemente enviamuitos segmentosback-to-back

Se o segmento eacuteperdido haveraacute muitosACKs duplicados

Se o transmissor recebe 3 ACKs para o mesmo dado ele supotildee que o segmentoapoacutes o dado confirmado foiperdido

Retransmissatildeo raacutepida reenviao segmento antes do temporizador expirar

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-68

Host A

tim

eout

Host B

tempo

X

seq=92 8 bytes de dado

seq=100 20 bytes de dado

seq=120 15 bytes de dado

seq=135 6 bytes de dado

seq=141 16 bytes de dado

Ack = 100

Ack = 100

Ack = 100

Ack = 100

seq=100 20 bytes de dado

tempo

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-69

event ACK received with ACK field value of y if (y gt SendBase)

SendBase = yif (there are currently not-yet-acknowledged segments)

start timer

else increment count of dup ACKs received for yif (count of dup ACKs received for y = 3)

resend segment with sequence number y

Algoritmo de Restransmissatildeo Raacutepida

ACK duplicado para um segmentojaacute reconhecido

Retransmissatildeo raacutepida

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-70

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-71

TCP Controle de Fluxo

lado receptor da conexatildeoTCP possui um buffer de recepccedilatildeo

Serviccedilo de speed-matching encontra a taxade envio adequada agrave taxade vazatildeo da aplicaccedilatildeoreceptora

Processos de aplicaccedilatildeopodem ser lentos para lero buffer

Transmissor natildeo deveesgotar os buffers de recepccedilatildeo enviandodados raacutepido demais

Controle de fluxo

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-72

TCP ndash controle de fluxo modo de operaccedilatildeo

(suponha que o receptor TCP descarte segmentos fora de ordem)

Espaccedilo disponiacutevel no buffer

= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Receptor informa a aacutereadisponiacutevel incluindo valor RcvWindow nossegmentos

Transmissor limita osdados natildeo confimados aoRcvWindow

Garantia contra overflow no buffer do receptor

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-73

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-74

Gerenciamento da Conexatildeo TCP

RelembrandoTCP transmissorestabelece conexatildeo com o receptor antes de trocarsegmentos de dados

Inicializar variaacuteveis Nuacutemeros de sequumlecircncia Buffers controle de fluxo

(ex RcvWindow) Cliente iniciador da conexatildeo

Socket clientSocket = new Socket(ldquohostnameportnumber)

Servidor chamado peloclienteSocket connectionSocket = welcomeSocketaccept()

Three way handshakePasso 1 sistema final cliente envia

TCP SYN ao servidor Especifica de sequecircncia

inicial Natildeo haacute envio de dados

Passo 2 sistema final servidor querecebe o SYN responde com segmento SYNACK

Reconhece o SYN recebido Aloca buffers Especifica o nuacutemero de

sequumlecircncia inicial do servidorPasso 3 o cliente reconhece o

SYNACK responde com um segmento ACK que pode conterdados

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-75

Gerenciamento da conexatildeo TCP (cont)

Fechando uma conexatildeo

client closes socketclientSocketclose()

Passo 1 sistema final cliente envia segmento de controle TCP FIN aoservidor

Passo 2 o servidor recebeFIN responde com ACK Fecha conexatildeo e envia FIN

cliente

FIN

servidor

ACK

fecha

fecha

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-76

Gerenciamento da Conexatildeo TCP (cont)

Passo 3 o cliente recebe FIN responde com ACK

Entra ldquoesperatemporizadardquo - respondecom ACKs aos FINsrecebidos

Passo 4 o servidor recebeACK Conexatildeo fechada

cliente

FIN

servidor

ACK

ACK

FIN

fecha

fecha

fechado

fechadoT

empo

de

espe

ra

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-77

Gerenciamento da Conexatildeo TCP (cont)

Ciclo de vidado Cliente TCP

Ciclo de vidado Servidor TCP

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-78

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-79

Princiacutepios de Controle do Congestionamento

Congestionamento Informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo

Diferente de controle de fluxo Indicaccedilotildees

Perda de pacotes (saturaccedilatildeo de buffer nosroteadores)

Atrasos grandes (filas nos buffers dos roteadores)

Problema top-10

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-80

CausasCustos do congestionamento

cenaacuterio 1 Dois emissores

dois receptores

Um roteador buffer infinito

Semretransmissatildeo

Grandesatrasos quandocongestionado

Buffers de saiacutedacompartilhados e ilimitados

Host Aλin dado original

Host B

λout

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-81

Causascustos do congestionamento cenaacuterio 2

Um roteador buffers finitos

Transmissor reenvia pacotes perdidos

Buffer finito

Host A λin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-82

CausasCustos do Congestionamento

cenaacuterio 2 (cont) (traacutefego bom)

Retransmissatildeo somente quando haacute perdas

Retransmissatildeo de pacotes atrasados (natildeo perdidos) tornamaior (que o caso anterior ) para o mesmo

λin

λout

=

λin

λout

gt

λinλ

out

ldquocustosrdquo do congestionamento

Mais trabalho (retransmissotildees) para um dado ldquotraacutefego bomrdquo

Retransmissotildees desnecessaacuterias enlace transporta vaacuterias coacutepias do mesmo pacote

R2

R2λin

λ out

a

R2

R2λin

λ out

c

R4

R2

R2λin

λ out

b

R3

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-83

Causascustos do congestionamento

cenaacuterio 3 Quatro transmissores

Caminhos com muacuteltiplos saltos

Temporizaccedilotildeesretransmissotildees

λin

P o que acontece quando e aumentam

λin

Buffers de saiacuteda limitados e compartilhados

Host Aλin dado original

Host B

λout

λin dado original maisdados retransmitidos

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-84

Causascustos do congestionamento cenaacuterio 3 (cont)

Outro ldquocustordquo do congestionamento

bull Quando o pacote eacute descartado qualquer capacidade de transmissatildeo que tenha sido anteriormente usada para aquele pacote eacute desperdiccedilada

Host A

Host B

λou

t

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-85

Abordagens voltadas para o controle do congestionamento

Controle de congestionamentofim-a-fim

Natildeo usa realimentaccedilatildeoexpliacutecita da rede

Congestionamento eacute inferidoa partir das perdas e dos atrasos observados nossistemas finais

Abordagem usada pelo TCP

Controle de congestionamentoassistido pela rede

Roteadores enviaminformaccedilotildees para os sistemasfinais

Bit uacutenico indicando o congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita do transmissorpoderia ser enviada

Existem duas abordagens gerais para o problema de controlede congestionamento

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-86

Controle de congestionamento assistido pela rede

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-87

Estudo de Caso Controle de congestionamentodo serviccedilo ABR no ATM

ABR available bit rate

ldquoserviccedilo elaacutesticordquo Se o caminho do

transmissor natildeo estaacutecongestionado

bull Transmissor podeusar a bandadisponiacutevel

Se o caminho do transmissor estaacutecongestionado

bull Transmissor eacutelimitado a uma taxamiacutenima garantida

Ceacutelulas RM (resource management)

Enviadas pelo transmissor entremeadas com as ceacutelulas de dados

Bits nas ceacutelulas RM satildeousados pelos comutadores(ldquoassistida pela rederdquo) bull NI bit natildeo aumenta a taxa (congestionamentoleve)bull CI bit indicaccedilatildeo de congestionamento

As ceacutelulas RM satildeo devolvidas aotransmissor pelo receptor com os bits de indicaccedilatildeo intactos

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-88

Estudo de Caso Controle de congestionamento do serviccedilo ABR no ATM (cont)

Campo ER (taxa expliacutecita) de dois bytes nas ceacutelulas RM Switch congestionado pode reduzir o valor de ER nas ceacutelulas O transmissor envia dados de acordo com essa vazatildeo miacutenima

suportada no caminho Bit EFCI nas ceacutelulas de dados marcado com 1 nos switches

congestionados Se a ceacutelula de dados que precede a ceacutelula RM tem o bit EFCI

setado o receptor marca o bit CI na ceacutelula RM devolvida

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-89

Capiacutetulo 3 Visatildeo Geral

31 Serviccedilos da Camadade Transporte

32 Multiplexaccedilatildeo e Demultiplexaccedilatildeo

33 Transporte Sem-Conexatildeo UDP

34 Princiacutepios datransferecircncia confiaacutevelde dados

35 TransporteOrientado_a_conexatildeo TCP

Estrutura do segmento

Transferecircncia confiaacutevel de dados

Controle de fluxo

Gerenciamento de conexatildeo

36 Princiacutepios do controle de congestionamento

37 Controle de congestionamento do TCP

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-90

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

TCP Controle de congestionamento ndash aumentoaditivo e descreacutescimo multiplicativo

Abordagem aumenta a taxa de transmissatildeo (tamanho da janela) ateacuteque ocorram perdas (teste da banda usaacutevel)

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacuteque uma perda seja detectada

Decreacutescimo multiplicativo corta CongWin pela metade apoacutes a ocorrecircncia de perda

time

Tam

anho

da

jane

lade

cong

esti

onam

ento

Comportamento dentede serra testando a banda disponiacutevel

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-91

TCP Controle de congestionamento- detalhes

O emissor limita a transmissatildeoLastByteSent-LastByteAcked

lelelele CongWin

Aproximadamente

CongWin eacute dinacircmica e funccedilatildeodo congestionamento percebidona rede

Como o emissor percebe o congestionamento

evento de perda= timeout ou 3 acks duplicados

O emissor reduz a taxa(CongWin) apoacutes um eventode perda

3 mecanismos AIMD

Partida lenta (slow start)

Accedilatildeo conservadora apoacutes a deteccedilatildeo dos eventos de timeout

taxa =CongWin

RTTBytessec

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-92

TCP Partida lenta (slow start)

No iniacutecio da conexatildeo CongWin = 1 MSS

Exemplo MSS = 500 bytes amp RTT = 200 ms

Taxa inicial = 20 kbps

Largura de bandadisponiacutevel pode ser gtgt MSSRTT

Desejaacutevel aumentarrapidamente ateacute o valor da banda disponiacutevel

Quando a conexatildeo comeccedila a taxa aumenta rapidamentede modo exponencial ateacute a ocorrecircncia do primeiroevento de perda

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-93

TCP Partida lenta (cont)

A conexatildeo inicialmenteaumenta a taxa de modoexponencial ateacute que a primeira perda ocorra

dobra CongWin a cadaRTT

Incrementa CongWinpara cada ACK recebido

Sumaacuterio taxa inicial eacutelenta mas aumenta de modo exponenciamenteraacutepido

Host A

Um segmento

RT

T

Host B

tempo

Dois segmentos

Quatro segmentos

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-94

Refinamento inferindo perdas

Apoacutes 3 ACKs duplos

CongWin eacute reduzida agravemetade

A janela entatildeo crescelinearmente

Mas apoacutes um evento de timeout

CongWin eacute reduzida a 1 MSS

A janela cresceexponencialmente

Apoacutes o ldquothresholdrdquo a janelacresce linearmente

3 ACKs duplos indicam que a rede ainda eacute capaz de entregar alguns segmentos timeout indica um cenaacuterio de congestionamento mais severo

Filosofia

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-95

Refinamento

P quando o aumentoexponencial devealterar paralinear

R quando CongWinalcanccedila 12 do seuvalor antes do timeout

Implementaccedilatildeo Threshold variaacutevel Quando da perda o threshold eacute

definido como igual a 12 do valor de CongWin imediatamente antes do evento de perda

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-96

Resumo Controle de congestionamentodo TCP

Quando CongWin estaacute abaixo do limite (Threshold) o emissor encontra-se na fase slow-start e a janelacresce exponencialmente

Quando CongWin estaacute acima do limite (Threshold) o emissor encontra-se na fase congestion-avoidance e a janela cresce linearmente

Quando trecircs ACKs duplicados satildeo recebidos o Threshold recebe o valor CongWin2 e CongWinrecebe o valor do Threshold

Quando um timeout ocorre Threshold recebe o valor CongWin2 e CongWin recebe o valor 1 MSS

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-97

TCP controle de congestionamentodo emissor

Evento Estado Accedilatildeo do transmissor TCP ComentaacuterioACK recebidopara dado previamentenatildeo-confirmado

partida lenta(SS)

CongWin = CongWin + MSS If (CongWin gt Threshold)

ajusta estado paraldquoprevenccedilatildeo de congestionamentordquo

Resulta em dobrar o CongWin a cada RTT

ACK recebidopara dado previamentenatildeo-confirmado

prevenccedilatildeo de congestiona-mento (CA)

CongWin = CongWin + MSS (MSSCongWin)

Aumento aditivo resultano aumento da CongWinem 1 MSS a cada RTT

Evento de perdadetectado portrecircs ACKsduplicados

SS or CA Threshold = CongWin2 CongWin = ThresholdAjusta estado para ldquoprevenccedilatildeode congestionamentordquo

Recuperacao rapida implementando reduccedilatildeomultiplicativa o CongWinnatildeo cairaacute abaixo de 1 MSS

Timeout SS or CA Threshold = CongWin2 CongWin = 1 MSSAjustar estado para ldquopartidalentardquo

Entra em partida lenta

ACK duplicado

SS or CA Incrementa o contador de ACK duplicado para o segmento queestaacute sendo confirmado

CongWin e Threshold natildeomudam

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-98

TCP throughput

Qual eacute o throughout do TCP em funccedilatildeo do tamanho da janela e do RTT Ignorar a fase do slow start

Defina W como o tamanho da janela quandoocorre a perda

Quando a janela eacute W o throughput eacuteWRTT

Logo apoacutes a perda a janela cai para W2 e o throughput passa a ser igual a (W2)RTT

Throughput meacutedio 75 WRTT

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-99

Futuro do TCP TCP sobre enlaces de grande capacidade

Exemplo segmentos de 1500 bytes RTT de 100 ms e deseja-se um throughput de 10 Gbps

Requer janelas de tamanho igual a W = 83333 segments

Throughput em termos da taxa de perda

L = 210-10 valor extremamente baixo Novas versotildees do TCP para redes de alta

velocidade

LRTT

MSSsdot221

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-100

Objetivo se K sessotildees TCP compartilham um enlace com banda R cada sessatildeo deveraacute obter uma taxameacutedia de RK

TCP connection 1

Gargalorepresentado

pela capacidade Rdo roteador

TCP connection 2

TCP Justiccedila

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-101

Porque o TCP eacute justo

Duas sessotildees competindo

O throughput conjunto das duas sessotildees crescesegundo uma reta de 45ordm

R

R

Compartilhamento igual da banda

Connection 1 throughput

Con

n ect

ion

2 t

hro

ughpu

t

congestion avoidance incremento aditivo

perda decresce a janela por um fator de 2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2

Transport Layer 3-102

Justiccedila (cont)

Justiccedila e o UDP

Aplicaccedilotildees multimiacutedanormalmente natildeo utilizam o TCP

Natildeo desejam limitar o emissor devido o congestionamento

Utilizam o UDP enviar aacuteudioviacutedeo a uma

taxa constante toleramperda de pacotes

pesquisa ldquoTCP friendlyrdquo

Justiccedila e conexotildees TCP em paralelo

Nada impede que as aplicaccedilotildeesabram conexotildees em paraleloentre 2 hosts

Browsers Web fazem isto

Exemplo enlace com taxa R suportando 9 conexotildees

Nova aplicaccedilatildeo solicita 1 conexatildeo TCP obteacutem taxa iguala R10

Nova aplicaccedilatildeo abre 11 conexotildees TCP obteacutem taxa R2