Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na...

105
Capítulo 3: Camada de Transporte Metas do capítulo: r entender os princípios atrás dos serviços da camada de transporte: m multiplexação/ demultiplexação m transferência confiável de dados m controle de fluxo m controle de congestionamento r aprender sobre os protocolos da camada de transporte da Internet: m UDP: transporte não orientado a conexões m TCP: transporte orientado a conexões m Controle de congestionamento do TCP 3: Camada de Transporte 1

Transcript of Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na...

Page 1: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Capiacutetulo 3 Camada de TransporteMetas do capiacutetulor entender os

princiacutepios atraacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia

confiaacutevel de dadosm controle de fluxom controle de

congestionamento

r aprender sobre os protocolos da camada de transporte da Internetm UDP transporte natildeo

orientado a conexotildeesm TCP transporte

orientado a conexotildeesm Controle de

congestionamento do TCP

3 Camada de Transporte 1

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 2

Serviccedilos e protocolos de transporte

r fornecem comunicaccedilatildeo loacutegica entre processos de aplicaccedilatildeo executando em diferentes hospedeiros

r os protocolos de transporte satildeo executados nos sistemas finais m lado transmissor quebra as

mensagens da aplicaccedilatildeo em segmentos repassa-os para a camada de rede

m lado receptor remonta as mensagens a partir dos segmentos repassa-as para a camada de aplicaccedilatildeo

r existe mais de um protocolo de transporte disponiacutevel para as aplicaccedilotildeesm Internet TCP e UDP

aplicaccedilatildeotransporte

redeenlacefiacutesica

redeenlacefiacutesica

aplicaccedilatildeotransporte

redeenlacefiacutesica

redeenlacefiacutesica

redeenlacefiacutesica

redeenlacefiacutesica

redeenlacefiacutesica

transporte loacutegico fim a fim

3 Camada de Transporte 3

Camadas de Transporte x rede

r camada de redecomunicaccedilatildeo loacutegica entre hospedeiros

r camada de transportecomunicaccedilatildeo loacutegica entre os processos m depende de e estende

serviccedilos da camada de rede

Analogia domeacutestica12 crianccedilas na casa de Ana

enviando cartas para 12 crianccedilas na casa de Bill

r hospedeiros = casasr processos = crianccedilasr mensagens da apl = cartas nos

envelopesr protocolo de transporte = Ana

e Bill que demultiplexam para suas crianccedilas

r protocolo da camada de rede = serviccedilo postal

3 Camada de Transporte 4

Protocolos da camada de transporte Internet

r entrega confiaacutevel ordenada (TCP)m controle de

congestionamentom controle de fluxom estabelecimento de conexatildeo

(ldquosetuprdquo)r entrega natildeo confiaacutevel natildeo

ordenada UDPm extensatildeo sem ldquogordurasrdquo do

ldquomelhor esforccedilordquo do IPr serviccedilos natildeo disponiacuteveis

m garantias de atraso maacuteximom garantias de largura de

banda miacutenima

aplicaccedilatildeotransporte

redeenlacefiacutesica

redeenlacefiacutesica

aplicaccedilatildeotransporte

redeenlacefiacutesica

redeenlacefiacutesica

redeenlacefiacutesica

redeenlacefiacutesica

redeenlacefiacutesica

transporte loacutegico fim a fim

3 Camada de Transporte 5

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 6

Multiplexaccedilatildeodemultiplexaccedilatildeo

Usa info do cabeccedilalho para entregar os segmentos recebidos aos sockets corretos

Demultiplexaccedilatildeo no receptorreuacutene dados de muitos sockets adiciona o cabeccedilalho de transporte (usado posteriormente para a demultiplexaccedilatildeo)

Multiplexaccedilatildeo no transm

processo

sockettransporte

aplicaccedilatildeo

fiacutesicaenlacerede

P2P1

transporte

aplicaccedilatildeo

fiacutesicaenlacerede

P4transporte

aplicaccedilatildeo

fiacutesicaenlacerede

P3

3 Camada de Transporte 7

r computador recebe os datagramas IPm cada datagrama possui

os endereccedilos IP da origem e do destino

m cada datagramatransporta um segmento da camada de transporte

m cada segmento possui nuacutemeros das portas origem e destino

r O hospedeiro usa os endereccedilos IP e os nuacutemeros das portas para direcionar o segmento ao socket apropriado

Como funciona a demultiplexaccedilatildeo

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(mensagempayload)

outros campos do cabeccedilalho

formato de segmentoTCPUDP

3 Camada de Transporte 8

Demultiplexaccedilatildeo natildeo orientada a conexotildeesr Lembrete socket criado possui

nuacutemero de porta local ao hostDatagramSocket mySocket1 = new

DatagramSocket(12534)

r Datagramas IP com mesmo no de porta destino masdiferentes endereccedilos IP origem eou nuacutemeros de porta origem podem ser encaminhados para o mesmo socket no destino

3 Camada de Transporte 9

r Quando o hospedeiro recebe o segmento UDPm verifica no da porta de

destino no segmentom encaminha o segmento UDP

para o socket com aquele no de porta

r Lembrete ao criar um datagrama para enviar para um socket UDP deve especificarm Endereccedilo IP de destinom Nuacutemero da porta de destino

Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo

DatagramSocket serverSocket = new DatagramSocket(6428)

transport

application

physicallink

network

P3transport

application

physicallink

network

P1

transport

application

physicallink

network

P4

DatagramSocket mySocket1 = new DatagramSocket (5775)

DatagramSocketmySocket2 = new DatagramSocket(9157)

source port 9157dest port 6428

source port 6428dest port 9157

source port dest port

source port dest port

3 Camada de Transporte 10

Demultiplexaccedilatildeo Orientada a Conexotildees

r Socket TCP identificado pela quaacutedrupla m endereccedilo IP origemm nuacutemero da porta origemm endereccedilo IP destinom nuacutemero da porta destino

r Demultiplexaccedilatildeo receptor usa todos os quatro valores para direcionar o segmento para o socket apropriado

r Servidor pode dar suporte a muitos sockets TCP simultacircneos m cada socket eacute identificado

pela sua proacutepria quaacutedruplar Servidores Web tecircm sockets

diferentes para cada conexatildeo de clientem HTTP natildeo persistente teraacute

sockets diferentes para cada pedido

3 Camada de Transporte 11

Demultiplexaccedilatildeo Orientada a Conexotildees exemplo

transport

application

physicallink

network

P3transport

application

physicallink

P4

transport

application

physicallink

network

P2

source IPport A9157dest IP port B80

source IPport B80dest IPport A9157

host IP address A

host IP address C

network

P6P5P3

source IPport C5775dest IPport B80

source IPport C9157dest IPport B80

trecircs segmentos todos destinados ao endereccedilo IP Bdest port 80 satildeo demultiplexados para sockets distintos

server IP address B

3 Camada de Transporte 12

Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads

transport

application

physicallink

network

P3transport

application

physicallink

transport

application

physicallink

network

P2

source IPport A9157dest IP port B80

source IPport B80dest IPport A9157

host IP address A

host IP address C

server IP address B

network

P3

source IPport C5775dest IPport B80

source IPport C9157dest IPport B80

P4

Servidor com threads

3 Camada de Transporte 13

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 14

UDP User Datagram Protocol [RFC 768]

r Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo

r Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem serm perdidosm entregues agrave aplicaccedilatildeo fora

de ordemr sem conexatildeo

m natildeo haacute saudaccedilatildeo inicial entre o remetente e o receptor UDP

m tratamento independente para cada segmento UDP

r Uso do UDPm aplicaccedilotildees de streaming

multimiacutedia (tolerante a perdas sensiacutevel a taxas)

m DNSm SNMP

r transferecircncia confiaacutevel sobre UDPm adiciona confiabilidade na

camada de aplicaccedilatildeom recuperaccedilatildeo de erros

especiacutefica da aplicaccedilatildeo

3 Camada de Transporte 15

UDP Cabeccedilalho do segmento

porta origem porta dest

32 bits

Dados de aplicaccedilatildeo

(mensagem)

Formato do segmento UDP

comprimento checksum

Comprimento em bytes dosegmento UDP

incluindo cabeccedilalho Por quecirc existe um UDPr elimina estabelecimento de

conexatildeo (que pode causar retardo)

r simples natildeo manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor

r cabeccedilalho de segmento reduzido

r Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)

3 Camada de Transporte 16

Soma de Verificaccedilatildeo (checksum)UDP

Transmissorr trata conteuacutedo do

segmento como sequecircncia de inteiros de 16-bits

r checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento

r transmissor coloca complemento do valor da soma no campo checksumdo UDP

Receptorr calcula checksum do

segmento recebidor verifica se o checksum

calculado bate com o valor recebidom NAtildeO - erro detectadom SIM - nenhum erro

detectado Mas ainda pode ter erros Veja depois hellip

Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido

3 Camada de Transporte 17

Exemplo do Checksum Internetr 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

transbordo

somasoma de

verificaccedilatildeo

3 Camada de Transporte 18

Note que ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 19

Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)r importante nas

camadas de transporte e de enlace

r na lista dos 10 toacutepicos mais importantes em redes

r caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)

3 Camada de Transporte 20

Transferecircncia confiaacutevel o ponto de partida

ladotransmissor

ladoreceptor

rdt_send() chamada de cima (ex pela apl) Passa dados p serem

entregues agrave camada sup do receptor

udt_send() chamada pelo rdt para transferir um pacotes para o receptor sobre um canal natildeo

confiaacutevel

rdt_rcv() chamada quando pacote chega no lado receptor do

canal

deliver_data() chamada pelordt para entregar dados p camada

superior

3 Camada de Transporte 21

Transferecircncia confiaacutevel o ponto de partidaIremosr desenvolver incrementalmente os lados transmissor e receptor

de um protocolo confiaacutevel de transferecircncia de dados (rdt)r considerar apenas fluxo unidirecional de dados

m mas info de controle flui em ambos os sentidosr Usar maacutequinas de estados finitos (FSM) p especificar os

protocolos transmissor e receptor

estado1

estado2

evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado

estado neste ldquoestadordquo o proacuteximo estado eacute

determinado unicamente pelo proacuteximo evento

eventoaccedilotildees

3 Camada de Transporte 22

rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis

r canal de transmissatildeo perfeitamente confiaacutevelm natildeo haacute erros de bitsm natildeo haacute perda de pacotes

r FSMs separadas para transmissor e receptorm transmissor envia dados

pelo canal subjacentem receptor lecirc os dados do

canal subjacente

3 Camada de Transporte 23

rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote

m lembrete checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros

Como as pessoas recuperam ldquoerrosrdquodurante uma conversa

3 Camada de Transporte 24

rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote

m lembre-se checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros

m reconhecimentos (ACKs) receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente

m reconhecimentos negativos (NAKs) receptor avisa explicitamente ao transmissor que o pacote tinha erros

m transmissor reenvia o pacote ao receber um NAKr novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10)

m detecccedilatildeo de errosm Realimentaccedilatildeo (feedback) mensagens de controle (ACKNAK) do

receptor para o transmissor

3 Camada de Transporte 25

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

Animaccedilatildeo no slide

seguinte

rdt20 operaccedilatildeo com ausecircncia de erros

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 27

transmissor

receptor

rdt20 cenaacuterio de erro

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

r Transmissor natildeo sabe o que se passou no receptor

r natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas r transmissor retransmite o

uacuteltimo pacote se ACKNAK chegar com erro

r transmissor inclui nuacutemero de sequecircncia em cada pacote

r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda respostado receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

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

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

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

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeo

Transmissorr no de seq no pacoter bastam dois nos de

seq (01) Por quecircr deve verificar se

ACKNAK recebidos estatildeo corrompidos

r duplicou o no de estadosm estado deve ldquolembrarrdquo

se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptorr deve verificar se o

pacote recebido eacute uma duplicatam estado indica se no de

seq esperado eacute 0 ou 1r nota receptor natildeo tem

como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs

r mesma funcionalidade do rdt21 usando apenas ACKs

r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq

do pacote reconhecidor ACKs duplicados no transmissor resultam

na mesma accedilatildeo do NAK retransmissatildeo do pacote atual

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 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)

aguarda ACK

0fragmento FSMdo transmissor

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

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

r retransmite se nenhum ACK for recebido neste intervalo

r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

m receptor deve especificar no de seq do pacote sendo reconhecido

r requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1

ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30

r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15

ms pacote de 8000 bits

r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

r protocolo limita uso dos recursos fiacutesicos

U sender =

00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 ===RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx ==+

=RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios

pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor

r 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

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

000810008300240

RTT3

tx ==+

acute=

RLRLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se

houver falha de seqr Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletivar O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia acksindividuais para cada pacote

r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador

estourar retransmite apenas o pacote correspondente

3 Camada de Transporte 43

Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)

r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes

pendentes3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simplesr usa apenas ACK sempre envia

ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do

expectedseqnum

r pacotes fora de ordem m descarta (natildeo armazena) -gt

receptor natildeo usa buffersm reconhece pacote com o

nuacutemero de sequecircncia mais alto em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1

receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1

receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva

r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para

posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais

um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK

r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletiva

dados de cimar se proacutex no de seq (n)

disponiacutevel estiver na janela envia o pacote e liga temporizador(n)

estouro do temporizador(n)r reenvia pacote n reinicia

temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como

ldquorecebidordquor se n for menor pacote natildeo

reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

r ACK(n)senatildeor ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 2: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 2

Serviccedilos e protocolos de transporte

r fornecem comunicaccedilatildeo loacutegica entre processos de aplicaccedilatildeo executando em diferentes hospedeiros

r os protocolos de transporte satildeo executados nos sistemas finais m lado transmissor quebra as

mensagens da aplicaccedilatildeo em segmentos repassa-os para a camada de rede

m lado receptor remonta as mensagens a partir dos segmentos repassa-as para a camada de aplicaccedilatildeo

r existe mais de um protocolo de transporte disponiacutevel para as aplicaccedilotildeesm Internet TCP e UDP

aplicaccedilatildeotransporte

redeenlacefiacutesica

redeenlacefiacutesica

aplicaccedilatildeotransporte

redeenlacefiacutesica

redeenlacefiacutesica

redeenlacefiacutesica

redeenlacefiacutesica

redeenlacefiacutesica

transporte loacutegico fim a fim

3 Camada de Transporte 3

Camadas de Transporte x rede

r camada de redecomunicaccedilatildeo loacutegica entre hospedeiros

r camada de transportecomunicaccedilatildeo loacutegica entre os processos m depende de e estende

serviccedilos da camada de rede

Analogia domeacutestica12 crianccedilas na casa de Ana

enviando cartas para 12 crianccedilas na casa de Bill

r hospedeiros = casasr processos = crianccedilasr mensagens da apl = cartas nos

envelopesr protocolo de transporte = Ana

e Bill que demultiplexam para suas crianccedilas

r protocolo da camada de rede = serviccedilo postal

3 Camada de Transporte 4

Protocolos da camada de transporte Internet

r entrega confiaacutevel ordenada (TCP)m controle de

congestionamentom controle de fluxom estabelecimento de conexatildeo

(ldquosetuprdquo)r entrega natildeo confiaacutevel natildeo

ordenada UDPm extensatildeo sem ldquogordurasrdquo do

ldquomelhor esforccedilordquo do IPr serviccedilos natildeo disponiacuteveis

m garantias de atraso maacuteximom garantias de largura de

banda miacutenima

aplicaccedilatildeotransporte

redeenlacefiacutesica

redeenlacefiacutesica

aplicaccedilatildeotransporte

redeenlacefiacutesica

redeenlacefiacutesica

redeenlacefiacutesica

redeenlacefiacutesica

redeenlacefiacutesica

transporte loacutegico fim a fim

3 Camada de Transporte 5

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 6

Multiplexaccedilatildeodemultiplexaccedilatildeo

Usa info do cabeccedilalho para entregar os segmentos recebidos aos sockets corretos

Demultiplexaccedilatildeo no receptorreuacutene dados de muitos sockets adiciona o cabeccedilalho de transporte (usado posteriormente para a demultiplexaccedilatildeo)

Multiplexaccedilatildeo no transm

processo

sockettransporte

aplicaccedilatildeo

fiacutesicaenlacerede

P2P1

transporte

aplicaccedilatildeo

fiacutesicaenlacerede

P4transporte

aplicaccedilatildeo

fiacutesicaenlacerede

P3

3 Camada de Transporte 7

r computador recebe os datagramas IPm cada datagrama possui

os endereccedilos IP da origem e do destino

m cada datagramatransporta um segmento da camada de transporte

m cada segmento possui nuacutemeros das portas origem e destino

r O hospedeiro usa os endereccedilos IP e os nuacutemeros das portas para direcionar o segmento ao socket apropriado

Como funciona a demultiplexaccedilatildeo

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(mensagempayload)

outros campos do cabeccedilalho

formato de segmentoTCPUDP

3 Camada de Transporte 8

Demultiplexaccedilatildeo natildeo orientada a conexotildeesr Lembrete socket criado possui

nuacutemero de porta local ao hostDatagramSocket mySocket1 = new

DatagramSocket(12534)

r Datagramas IP com mesmo no de porta destino masdiferentes endereccedilos IP origem eou nuacutemeros de porta origem podem ser encaminhados para o mesmo socket no destino

3 Camada de Transporte 9

r Quando o hospedeiro recebe o segmento UDPm verifica no da porta de

destino no segmentom encaminha o segmento UDP

para o socket com aquele no de porta

r Lembrete ao criar um datagrama para enviar para um socket UDP deve especificarm Endereccedilo IP de destinom Nuacutemero da porta de destino

Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo

DatagramSocket serverSocket = new DatagramSocket(6428)

transport

application

physicallink

network

P3transport

application

physicallink

network

P1

transport

application

physicallink

network

P4

DatagramSocket mySocket1 = new DatagramSocket (5775)

DatagramSocketmySocket2 = new DatagramSocket(9157)

source port 9157dest port 6428

source port 6428dest port 9157

source port dest port

source port dest port

3 Camada de Transporte 10

Demultiplexaccedilatildeo Orientada a Conexotildees

r Socket TCP identificado pela quaacutedrupla m endereccedilo IP origemm nuacutemero da porta origemm endereccedilo IP destinom nuacutemero da porta destino

r Demultiplexaccedilatildeo receptor usa todos os quatro valores para direcionar o segmento para o socket apropriado

r Servidor pode dar suporte a muitos sockets TCP simultacircneos m cada socket eacute identificado

pela sua proacutepria quaacutedruplar Servidores Web tecircm sockets

diferentes para cada conexatildeo de clientem HTTP natildeo persistente teraacute

sockets diferentes para cada pedido

3 Camada de Transporte 11

Demultiplexaccedilatildeo Orientada a Conexotildees exemplo

transport

application

physicallink

network

P3transport

application

physicallink

P4

transport

application

physicallink

network

P2

source IPport A9157dest IP port B80

source IPport B80dest IPport A9157

host IP address A

host IP address C

network

P6P5P3

source IPport C5775dest IPport B80

source IPport C9157dest IPport B80

trecircs segmentos todos destinados ao endereccedilo IP Bdest port 80 satildeo demultiplexados para sockets distintos

server IP address B

3 Camada de Transporte 12

Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads

transport

application

physicallink

network

P3transport

application

physicallink

transport

application

physicallink

network

P2

source IPport A9157dest IP port B80

source IPport B80dest IPport A9157

host IP address A

host IP address C

server IP address B

network

P3

source IPport C5775dest IPport B80

source IPport C9157dest IPport B80

P4

Servidor com threads

3 Camada de Transporte 13

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 14

UDP User Datagram Protocol [RFC 768]

r Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo

r Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem serm perdidosm entregues agrave aplicaccedilatildeo fora

de ordemr sem conexatildeo

m natildeo haacute saudaccedilatildeo inicial entre o remetente e o receptor UDP

m tratamento independente para cada segmento UDP

r Uso do UDPm aplicaccedilotildees de streaming

multimiacutedia (tolerante a perdas sensiacutevel a taxas)

m DNSm SNMP

r transferecircncia confiaacutevel sobre UDPm adiciona confiabilidade na

camada de aplicaccedilatildeom recuperaccedilatildeo de erros

especiacutefica da aplicaccedilatildeo

3 Camada de Transporte 15

UDP Cabeccedilalho do segmento

porta origem porta dest

32 bits

Dados de aplicaccedilatildeo

(mensagem)

Formato do segmento UDP

comprimento checksum

Comprimento em bytes dosegmento UDP

incluindo cabeccedilalho Por quecirc existe um UDPr elimina estabelecimento de

conexatildeo (que pode causar retardo)

r simples natildeo manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor

r cabeccedilalho de segmento reduzido

r Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)

3 Camada de Transporte 16

Soma de Verificaccedilatildeo (checksum)UDP

Transmissorr trata conteuacutedo do

segmento como sequecircncia de inteiros de 16-bits

r checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento

r transmissor coloca complemento do valor da soma no campo checksumdo UDP

Receptorr calcula checksum do

segmento recebidor verifica se o checksum

calculado bate com o valor recebidom NAtildeO - erro detectadom SIM - nenhum erro

detectado Mas ainda pode ter erros Veja depois hellip

Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido

3 Camada de Transporte 17

Exemplo do Checksum Internetr 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

transbordo

somasoma de

verificaccedilatildeo

3 Camada de Transporte 18

Note que ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 19

Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)r importante nas

camadas de transporte e de enlace

r na lista dos 10 toacutepicos mais importantes em redes

r caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)

3 Camada de Transporte 20

Transferecircncia confiaacutevel o ponto de partida

ladotransmissor

ladoreceptor

rdt_send() chamada de cima (ex pela apl) Passa dados p serem

entregues agrave camada sup do receptor

udt_send() chamada pelo rdt para transferir um pacotes para o receptor sobre um canal natildeo

confiaacutevel

rdt_rcv() chamada quando pacote chega no lado receptor do

canal

deliver_data() chamada pelordt para entregar dados p camada

superior

3 Camada de Transporte 21

Transferecircncia confiaacutevel o ponto de partidaIremosr desenvolver incrementalmente os lados transmissor e receptor

de um protocolo confiaacutevel de transferecircncia de dados (rdt)r considerar apenas fluxo unidirecional de dados

m mas info de controle flui em ambos os sentidosr Usar maacutequinas de estados finitos (FSM) p especificar os

protocolos transmissor e receptor

estado1

estado2

evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado

estado neste ldquoestadordquo o proacuteximo estado eacute

determinado unicamente pelo proacuteximo evento

eventoaccedilotildees

3 Camada de Transporte 22

rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis

r canal de transmissatildeo perfeitamente confiaacutevelm natildeo haacute erros de bitsm natildeo haacute perda de pacotes

r FSMs separadas para transmissor e receptorm transmissor envia dados

pelo canal subjacentem receptor lecirc os dados do

canal subjacente

3 Camada de Transporte 23

rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote

m lembrete checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros

Como as pessoas recuperam ldquoerrosrdquodurante uma conversa

3 Camada de Transporte 24

rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote

m lembre-se checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros

m reconhecimentos (ACKs) receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente

m reconhecimentos negativos (NAKs) receptor avisa explicitamente ao transmissor que o pacote tinha erros

m transmissor reenvia o pacote ao receber um NAKr novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10)

m detecccedilatildeo de errosm Realimentaccedilatildeo (feedback) mensagens de controle (ACKNAK) do

receptor para o transmissor

3 Camada de Transporte 25

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

Animaccedilatildeo no slide

seguinte

rdt20 operaccedilatildeo com ausecircncia de erros

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 27

transmissor

receptor

rdt20 cenaacuterio de erro

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

r Transmissor natildeo sabe o que se passou no receptor

r natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas r transmissor retransmite o

uacuteltimo pacote se ACKNAK chegar com erro

r transmissor inclui nuacutemero de sequecircncia em cada pacote

r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda respostado receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

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

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

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

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeo

Transmissorr no de seq no pacoter bastam dois nos de

seq (01) Por quecircr deve verificar se

ACKNAK recebidos estatildeo corrompidos

r duplicou o no de estadosm estado deve ldquolembrarrdquo

se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptorr deve verificar se o

pacote recebido eacute uma duplicatam estado indica se no de

seq esperado eacute 0 ou 1r nota receptor natildeo tem

como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs

r mesma funcionalidade do rdt21 usando apenas ACKs

r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq

do pacote reconhecidor ACKs duplicados no transmissor resultam

na mesma accedilatildeo do NAK retransmissatildeo do pacote atual

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 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)

aguarda ACK

0fragmento FSMdo transmissor

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

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

r retransmite se nenhum ACK for recebido neste intervalo

r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

m receptor deve especificar no de seq do pacote sendo reconhecido

r requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1

ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30

r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15

ms pacote de 8000 bits

r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

r protocolo limita uso dos recursos fiacutesicos

U sender =

00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 ===RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx ==+

=RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios

pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor

r 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

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

000810008300240

RTT3

tx ==+

acute=

RLRLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se

houver falha de seqr Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletivar O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia acksindividuais para cada pacote

r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador

estourar retransmite apenas o pacote correspondente

3 Camada de Transporte 43

Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)

r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes

pendentes3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simplesr usa apenas ACK sempre envia

ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do

expectedseqnum

r pacotes fora de ordem m descarta (natildeo armazena) -gt

receptor natildeo usa buffersm reconhece pacote com o

nuacutemero de sequecircncia mais alto em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1

receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1

receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva

r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para

posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais

um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK

r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletiva

dados de cimar se proacutex no de seq (n)

disponiacutevel estiver na janela envia o pacote e liga temporizador(n)

estouro do temporizador(n)r reenvia pacote n reinicia

temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como

ldquorecebidordquor se n for menor pacote natildeo

reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

r ACK(n)senatildeor ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 3: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Serviccedilos e protocolos de transporte

r fornecem comunicaccedilatildeo loacutegica entre processos de aplicaccedilatildeo executando em diferentes hospedeiros

r os protocolos de transporte satildeo executados nos sistemas finais m lado transmissor quebra as

mensagens da aplicaccedilatildeo em segmentos repassa-os para a camada de rede

m lado receptor remonta as mensagens a partir dos segmentos repassa-as para a camada de aplicaccedilatildeo

r existe mais de um protocolo de transporte disponiacutevel para as aplicaccedilotildeesm Internet TCP e UDP

aplicaccedilatildeotransporte

redeenlacefiacutesica

redeenlacefiacutesica

aplicaccedilatildeotransporte

redeenlacefiacutesica

redeenlacefiacutesica

redeenlacefiacutesica

redeenlacefiacutesica

redeenlacefiacutesica

transporte loacutegico fim a fim

3 Camada de Transporte 3

Camadas de Transporte x rede

r camada de redecomunicaccedilatildeo loacutegica entre hospedeiros

r camada de transportecomunicaccedilatildeo loacutegica entre os processos m depende de e estende

serviccedilos da camada de rede

Analogia domeacutestica12 crianccedilas na casa de Ana

enviando cartas para 12 crianccedilas na casa de Bill

r hospedeiros = casasr processos = crianccedilasr mensagens da apl = cartas nos

envelopesr protocolo de transporte = Ana

e Bill que demultiplexam para suas crianccedilas

r protocolo da camada de rede = serviccedilo postal

3 Camada de Transporte 4

Protocolos da camada de transporte Internet

r entrega confiaacutevel ordenada (TCP)m controle de

congestionamentom controle de fluxom estabelecimento de conexatildeo

(ldquosetuprdquo)r entrega natildeo confiaacutevel natildeo

ordenada UDPm extensatildeo sem ldquogordurasrdquo do

ldquomelhor esforccedilordquo do IPr serviccedilos natildeo disponiacuteveis

m garantias de atraso maacuteximom garantias de largura de

banda miacutenima

aplicaccedilatildeotransporte

redeenlacefiacutesica

redeenlacefiacutesica

aplicaccedilatildeotransporte

redeenlacefiacutesica

redeenlacefiacutesica

redeenlacefiacutesica

redeenlacefiacutesica

redeenlacefiacutesica

transporte loacutegico fim a fim

3 Camada de Transporte 5

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 6

Multiplexaccedilatildeodemultiplexaccedilatildeo

Usa info do cabeccedilalho para entregar os segmentos recebidos aos sockets corretos

Demultiplexaccedilatildeo no receptorreuacutene dados de muitos sockets adiciona o cabeccedilalho de transporte (usado posteriormente para a demultiplexaccedilatildeo)

Multiplexaccedilatildeo no transm

processo

sockettransporte

aplicaccedilatildeo

fiacutesicaenlacerede

P2P1

transporte

aplicaccedilatildeo

fiacutesicaenlacerede

P4transporte

aplicaccedilatildeo

fiacutesicaenlacerede

P3

3 Camada de Transporte 7

r computador recebe os datagramas IPm cada datagrama possui

os endereccedilos IP da origem e do destino

m cada datagramatransporta um segmento da camada de transporte

m cada segmento possui nuacutemeros das portas origem e destino

r O hospedeiro usa os endereccedilos IP e os nuacutemeros das portas para direcionar o segmento ao socket apropriado

Como funciona a demultiplexaccedilatildeo

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(mensagempayload)

outros campos do cabeccedilalho

formato de segmentoTCPUDP

3 Camada de Transporte 8

Demultiplexaccedilatildeo natildeo orientada a conexotildeesr Lembrete socket criado possui

nuacutemero de porta local ao hostDatagramSocket mySocket1 = new

DatagramSocket(12534)

r Datagramas IP com mesmo no de porta destino masdiferentes endereccedilos IP origem eou nuacutemeros de porta origem podem ser encaminhados para o mesmo socket no destino

3 Camada de Transporte 9

r Quando o hospedeiro recebe o segmento UDPm verifica no da porta de

destino no segmentom encaminha o segmento UDP

para o socket com aquele no de porta

r Lembrete ao criar um datagrama para enviar para um socket UDP deve especificarm Endereccedilo IP de destinom Nuacutemero da porta de destino

Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo

DatagramSocket serverSocket = new DatagramSocket(6428)

transport

application

physicallink

network

P3transport

application

physicallink

network

P1

transport

application

physicallink

network

P4

DatagramSocket mySocket1 = new DatagramSocket (5775)

DatagramSocketmySocket2 = new DatagramSocket(9157)

source port 9157dest port 6428

source port 6428dest port 9157

source port dest port

source port dest port

3 Camada de Transporte 10

Demultiplexaccedilatildeo Orientada a Conexotildees

r Socket TCP identificado pela quaacutedrupla m endereccedilo IP origemm nuacutemero da porta origemm endereccedilo IP destinom nuacutemero da porta destino

r Demultiplexaccedilatildeo receptor usa todos os quatro valores para direcionar o segmento para o socket apropriado

r Servidor pode dar suporte a muitos sockets TCP simultacircneos m cada socket eacute identificado

pela sua proacutepria quaacutedruplar Servidores Web tecircm sockets

diferentes para cada conexatildeo de clientem HTTP natildeo persistente teraacute

sockets diferentes para cada pedido

3 Camada de Transporte 11

Demultiplexaccedilatildeo Orientada a Conexotildees exemplo

transport

application

physicallink

network

P3transport

application

physicallink

P4

transport

application

physicallink

network

P2

source IPport A9157dest IP port B80

source IPport B80dest IPport A9157

host IP address A

host IP address C

network

P6P5P3

source IPport C5775dest IPport B80

source IPport C9157dest IPport B80

trecircs segmentos todos destinados ao endereccedilo IP Bdest port 80 satildeo demultiplexados para sockets distintos

server IP address B

3 Camada de Transporte 12

Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads

transport

application

physicallink

network

P3transport

application

physicallink

transport

application

physicallink

network

P2

source IPport A9157dest IP port B80

source IPport B80dest IPport A9157

host IP address A

host IP address C

server IP address B

network

P3

source IPport C5775dest IPport B80

source IPport C9157dest IPport B80

P4

Servidor com threads

3 Camada de Transporte 13

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 14

UDP User Datagram Protocol [RFC 768]

r Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo

r Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem serm perdidosm entregues agrave aplicaccedilatildeo fora

de ordemr sem conexatildeo

m natildeo haacute saudaccedilatildeo inicial entre o remetente e o receptor UDP

m tratamento independente para cada segmento UDP

r Uso do UDPm aplicaccedilotildees de streaming

multimiacutedia (tolerante a perdas sensiacutevel a taxas)

m DNSm SNMP

r transferecircncia confiaacutevel sobre UDPm adiciona confiabilidade na

camada de aplicaccedilatildeom recuperaccedilatildeo de erros

especiacutefica da aplicaccedilatildeo

3 Camada de Transporte 15

UDP Cabeccedilalho do segmento

porta origem porta dest

32 bits

Dados de aplicaccedilatildeo

(mensagem)

Formato do segmento UDP

comprimento checksum

Comprimento em bytes dosegmento UDP

incluindo cabeccedilalho Por quecirc existe um UDPr elimina estabelecimento de

conexatildeo (que pode causar retardo)

r simples natildeo manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor

r cabeccedilalho de segmento reduzido

r Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)

3 Camada de Transporte 16

Soma de Verificaccedilatildeo (checksum)UDP

Transmissorr trata conteuacutedo do

segmento como sequecircncia de inteiros de 16-bits

r checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento

r transmissor coloca complemento do valor da soma no campo checksumdo UDP

Receptorr calcula checksum do

segmento recebidor verifica se o checksum

calculado bate com o valor recebidom NAtildeO - erro detectadom SIM - nenhum erro

detectado Mas ainda pode ter erros Veja depois hellip

Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido

3 Camada de Transporte 17

Exemplo do Checksum Internetr 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

transbordo

somasoma de

verificaccedilatildeo

3 Camada de Transporte 18

Note que ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 19

Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)r importante nas

camadas de transporte e de enlace

r na lista dos 10 toacutepicos mais importantes em redes

r caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)

3 Camada de Transporte 20

Transferecircncia confiaacutevel o ponto de partida

ladotransmissor

ladoreceptor

rdt_send() chamada de cima (ex pela apl) Passa dados p serem

entregues agrave camada sup do receptor

udt_send() chamada pelo rdt para transferir um pacotes para o receptor sobre um canal natildeo

confiaacutevel

rdt_rcv() chamada quando pacote chega no lado receptor do

canal

deliver_data() chamada pelordt para entregar dados p camada

superior

3 Camada de Transporte 21

Transferecircncia confiaacutevel o ponto de partidaIremosr desenvolver incrementalmente os lados transmissor e receptor

de um protocolo confiaacutevel de transferecircncia de dados (rdt)r considerar apenas fluxo unidirecional de dados

m mas info de controle flui em ambos os sentidosr Usar maacutequinas de estados finitos (FSM) p especificar os

protocolos transmissor e receptor

estado1

estado2

evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado

estado neste ldquoestadordquo o proacuteximo estado eacute

determinado unicamente pelo proacuteximo evento

eventoaccedilotildees

3 Camada de Transporte 22

rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis

r canal de transmissatildeo perfeitamente confiaacutevelm natildeo haacute erros de bitsm natildeo haacute perda de pacotes

r FSMs separadas para transmissor e receptorm transmissor envia dados

pelo canal subjacentem receptor lecirc os dados do

canal subjacente

3 Camada de Transporte 23

rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote

m lembrete checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros

Como as pessoas recuperam ldquoerrosrdquodurante uma conversa

3 Camada de Transporte 24

rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote

m lembre-se checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros

m reconhecimentos (ACKs) receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente

m reconhecimentos negativos (NAKs) receptor avisa explicitamente ao transmissor que o pacote tinha erros

m transmissor reenvia o pacote ao receber um NAKr novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10)

m detecccedilatildeo de errosm Realimentaccedilatildeo (feedback) mensagens de controle (ACKNAK) do

receptor para o transmissor

3 Camada de Transporte 25

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

Animaccedilatildeo no slide

seguinte

rdt20 operaccedilatildeo com ausecircncia de erros

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 27

transmissor

receptor

rdt20 cenaacuterio de erro

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

r Transmissor natildeo sabe o que se passou no receptor

r natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas r transmissor retransmite o

uacuteltimo pacote se ACKNAK chegar com erro

r transmissor inclui nuacutemero de sequecircncia em cada pacote

r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda respostado receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

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

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

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

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeo

Transmissorr no de seq no pacoter bastam dois nos de

seq (01) Por quecircr deve verificar se

ACKNAK recebidos estatildeo corrompidos

r duplicou o no de estadosm estado deve ldquolembrarrdquo

se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptorr deve verificar se o

pacote recebido eacute uma duplicatam estado indica se no de

seq esperado eacute 0 ou 1r nota receptor natildeo tem

como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs

r mesma funcionalidade do rdt21 usando apenas ACKs

r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq

do pacote reconhecidor ACKs duplicados no transmissor resultam

na mesma accedilatildeo do NAK retransmissatildeo do pacote atual

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 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)

aguarda ACK

0fragmento FSMdo transmissor

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

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

r retransmite se nenhum ACK for recebido neste intervalo

r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

m receptor deve especificar no de seq do pacote sendo reconhecido

r requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1

ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30

r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15

ms pacote de 8000 bits

r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

r protocolo limita uso dos recursos fiacutesicos

U sender =

00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 ===RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx ==+

=RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios

pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor

r 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

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

000810008300240

RTT3

tx ==+

acute=

RLRLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se

houver falha de seqr Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletivar O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia acksindividuais para cada pacote

r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador

estourar retransmite apenas o pacote correspondente

3 Camada de Transporte 43

Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)

r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes

pendentes3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simplesr usa apenas ACK sempre envia

ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do

expectedseqnum

r pacotes fora de ordem m descarta (natildeo armazena) -gt

receptor natildeo usa buffersm reconhece pacote com o

nuacutemero de sequecircncia mais alto em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1

receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1

receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva

r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para

posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais

um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK

r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletiva

dados de cimar se proacutex no de seq (n)

disponiacutevel estiver na janela envia o pacote e liga temporizador(n)

estouro do temporizador(n)r reenvia pacote n reinicia

temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como

ldquorecebidordquor se n for menor pacote natildeo

reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

r ACK(n)senatildeor ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 4: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Camadas de Transporte x rede

r camada de redecomunicaccedilatildeo loacutegica entre hospedeiros

r camada de transportecomunicaccedilatildeo loacutegica entre os processos m depende de e estende

serviccedilos da camada de rede

Analogia domeacutestica12 crianccedilas na casa de Ana

enviando cartas para 12 crianccedilas na casa de Bill

r hospedeiros = casasr processos = crianccedilasr mensagens da apl = cartas nos

envelopesr protocolo de transporte = Ana

e Bill que demultiplexam para suas crianccedilas

r protocolo da camada de rede = serviccedilo postal

3 Camada de Transporte 4

Protocolos da camada de transporte Internet

r entrega confiaacutevel ordenada (TCP)m controle de

congestionamentom controle de fluxom estabelecimento de conexatildeo

(ldquosetuprdquo)r entrega natildeo confiaacutevel natildeo

ordenada UDPm extensatildeo sem ldquogordurasrdquo do

ldquomelhor esforccedilordquo do IPr serviccedilos natildeo disponiacuteveis

m garantias de atraso maacuteximom garantias de largura de

banda miacutenima

aplicaccedilatildeotransporte

redeenlacefiacutesica

redeenlacefiacutesica

aplicaccedilatildeotransporte

redeenlacefiacutesica

redeenlacefiacutesica

redeenlacefiacutesica

redeenlacefiacutesica

redeenlacefiacutesica

transporte loacutegico fim a fim

3 Camada de Transporte 5

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 6

Multiplexaccedilatildeodemultiplexaccedilatildeo

Usa info do cabeccedilalho para entregar os segmentos recebidos aos sockets corretos

Demultiplexaccedilatildeo no receptorreuacutene dados de muitos sockets adiciona o cabeccedilalho de transporte (usado posteriormente para a demultiplexaccedilatildeo)

Multiplexaccedilatildeo no transm

processo

sockettransporte

aplicaccedilatildeo

fiacutesicaenlacerede

P2P1

transporte

aplicaccedilatildeo

fiacutesicaenlacerede

P4transporte

aplicaccedilatildeo

fiacutesicaenlacerede

P3

3 Camada de Transporte 7

r computador recebe os datagramas IPm cada datagrama possui

os endereccedilos IP da origem e do destino

m cada datagramatransporta um segmento da camada de transporte

m cada segmento possui nuacutemeros das portas origem e destino

r O hospedeiro usa os endereccedilos IP e os nuacutemeros das portas para direcionar o segmento ao socket apropriado

Como funciona a demultiplexaccedilatildeo

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(mensagempayload)

outros campos do cabeccedilalho

formato de segmentoTCPUDP

3 Camada de Transporte 8

Demultiplexaccedilatildeo natildeo orientada a conexotildeesr Lembrete socket criado possui

nuacutemero de porta local ao hostDatagramSocket mySocket1 = new

DatagramSocket(12534)

r Datagramas IP com mesmo no de porta destino masdiferentes endereccedilos IP origem eou nuacutemeros de porta origem podem ser encaminhados para o mesmo socket no destino

3 Camada de Transporte 9

r Quando o hospedeiro recebe o segmento UDPm verifica no da porta de

destino no segmentom encaminha o segmento UDP

para o socket com aquele no de porta

r Lembrete ao criar um datagrama para enviar para um socket UDP deve especificarm Endereccedilo IP de destinom Nuacutemero da porta de destino

Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo

DatagramSocket serverSocket = new DatagramSocket(6428)

transport

application

physicallink

network

P3transport

application

physicallink

network

P1

transport

application

physicallink

network

P4

DatagramSocket mySocket1 = new DatagramSocket (5775)

DatagramSocketmySocket2 = new DatagramSocket(9157)

source port 9157dest port 6428

source port 6428dest port 9157

source port dest port

source port dest port

3 Camada de Transporte 10

Demultiplexaccedilatildeo Orientada a Conexotildees

r Socket TCP identificado pela quaacutedrupla m endereccedilo IP origemm nuacutemero da porta origemm endereccedilo IP destinom nuacutemero da porta destino

r Demultiplexaccedilatildeo receptor usa todos os quatro valores para direcionar o segmento para o socket apropriado

r Servidor pode dar suporte a muitos sockets TCP simultacircneos m cada socket eacute identificado

pela sua proacutepria quaacutedruplar Servidores Web tecircm sockets

diferentes para cada conexatildeo de clientem HTTP natildeo persistente teraacute

sockets diferentes para cada pedido

3 Camada de Transporte 11

Demultiplexaccedilatildeo Orientada a Conexotildees exemplo

transport

application

physicallink

network

P3transport

application

physicallink

P4

transport

application

physicallink

network

P2

source IPport A9157dest IP port B80

source IPport B80dest IPport A9157

host IP address A

host IP address C

network

P6P5P3

source IPport C5775dest IPport B80

source IPport C9157dest IPport B80

trecircs segmentos todos destinados ao endereccedilo IP Bdest port 80 satildeo demultiplexados para sockets distintos

server IP address B

3 Camada de Transporte 12

Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads

transport

application

physicallink

network

P3transport

application

physicallink

transport

application

physicallink

network

P2

source IPport A9157dest IP port B80

source IPport B80dest IPport A9157

host IP address A

host IP address C

server IP address B

network

P3

source IPport C5775dest IPport B80

source IPport C9157dest IPport B80

P4

Servidor com threads

3 Camada de Transporte 13

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 14

UDP User Datagram Protocol [RFC 768]

r Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo

r Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem serm perdidosm entregues agrave aplicaccedilatildeo fora

de ordemr sem conexatildeo

m natildeo haacute saudaccedilatildeo inicial entre o remetente e o receptor UDP

m tratamento independente para cada segmento UDP

r Uso do UDPm aplicaccedilotildees de streaming

multimiacutedia (tolerante a perdas sensiacutevel a taxas)

m DNSm SNMP

r transferecircncia confiaacutevel sobre UDPm adiciona confiabilidade na

camada de aplicaccedilatildeom recuperaccedilatildeo de erros

especiacutefica da aplicaccedilatildeo

3 Camada de Transporte 15

UDP Cabeccedilalho do segmento

porta origem porta dest

32 bits

Dados de aplicaccedilatildeo

(mensagem)

Formato do segmento UDP

comprimento checksum

Comprimento em bytes dosegmento UDP

incluindo cabeccedilalho Por quecirc existe um UDPr elimina estabelecimento de

conexatildeo (que pode causar retardo)

r simples natildeo manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor

r cabeccedilalho de segmento reduzido

r Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)

3 Camada de Transporte 16

Soma de Verificaccedilatildeo (checksum)UDP

Transmissorr trata conteuacutedo do

segmento como sequecircncia de inteiros de 16-bits

r checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento

r transmissor coloca complemento do valor da soma no campo checksumdo UDP

Receptorr calcula checksum do

segmento recebidor verifica se o checksum

calculado bate com o valor recebidom NAtildeO - erro detectadom SIM - nenhum erro

detectado Mas ainda pode ter erros Veja depois hellip

Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido

3 Camada de Transporte 17

Exemplo do Checksum Internetr 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

transbordo

somasoma de

verificaccedilatildeo

3 Camada de Transporte 18

Note que ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 19

Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)r importante nas

camadas de transporte e de enlace

r na lista dos 10 toacutepicos mais importantes em redes

r caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)

3 Camada de Transporte 20

Transferecircncia confiaacutevel o ponto de partida

ladotransmissor

ladoreceptor

rdt_send() chamada de cima (ex pela apl) Passa dados p serem

entregues agrave camada sup do receptor

udt_send() chamada pelo rdt para transferir um pacotes para o receptor sobre um canal natildeo

confiaacutevel

rdt_rcv() chamada quando pacote chega no lado receptor do

canal

deliver_data() chamada pelordt para entregar dados p camada

superior

3 Camada de Transporte 21

Transferecircncia confiaacutevel o ponto de partidaIremosr desenvolver incrementalmente os lados transmissor e receptor

de um protocolo confiaacutevel de transferecircncia de dados (rdt)r considerar apenas fluxo unidirecional de dados

m mas info de controle flui em ambos os sentidosr Usar maacutequinas de estados finitos (FSM) p especificar os

protocolos transmissor e receptor

estado1

estado2

evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado

estado neste ldquoestadordquo o proacuteximo estado eacute

determinado unicamente pelo proacuteximo evento

eventoaccedilotildees

3 Camada de Transporte 22

rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis

r canal de transmissatildeo perfeitamente confiaacutevelm natildeo haacute erros de bitsm natildeo haacute perda de pacotes

r FSMs separadas para transmissor e receptorm transmissor envia dados

pelo canal subjacentem receptor lecirc os dados do

canal subjacente

3 Camada de Transporte 23

rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote

m lembrete checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros

Como as pessoas recuperam ldquoerrosrdquodurante uma conversa

3 Camada de Transporte 24

rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote

m lembre-se checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros

m reconhecimentos (ACKs) receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente

m reconhecimentos negativos (NAKs) receptor avisa explicitamente ao transmissor que o pacote tinha erros

m transmissor reenvia o pacote ao receber um NAKr novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10)

m detecccedilatildeo de errosm Realimentaccedilatildeo (feedback) mensagens de controle (ACKNAK) do

receptor para o transmissor

3 Camada de Transporte 25

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

Animaccedilatildeo no slide

seguinte

rdt20 operaccedilatildeo com ausecircncia de erros

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 27

transmissor

receptor

rdt20 cenaacuterio de erro

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

r Transmissor natildeo sabe o que se passou no receptor

r natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas r transmissor retransmite o

uacuteltimo pacote se ACKNAK chegar com erro

r transmissor inclui nuacutemero de sequecircncia em cada pacote

r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda respostado receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

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

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

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

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeo

Transmissorr no de seq no pacoter bastam dois nos de

seq (01) Por quecircr deve verificar se

ACKNAK recebidos estatildeo corrompidos

r duplicou o no de estadosm estado deve ldquolembrarrdquo

se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptorr deve verificar se o

pacote recebido eacute uma duplicatam estado indica se no de

seq esperado eacute 0 ou 1r nota receptor natildeo tem

como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs

r mesma funcionalidade do rdt21 usando apenas ACKs

r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq

do pacote reconhecidor ACKs duplicados no transmissor resultam

na mesma accedilatildeo do NAK retransmissatildeo do pacote atual

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 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)

aguarda ACK

0fragmento FSMdo transmissor

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

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

r retransmite se nenhum ACK for recebido neste intervalo

r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

m receptor deve especificar no de seq do pacote sendo reconhecido

r requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1

ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30

r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15

ms pacote de 8000 bits

r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

r protocolo limita uso dos recursos fiacutesicos

U sender =

00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 ===RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx ==+

=RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios

pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor

r 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

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

000810008300240

RTT3

tx ==+

acute=

RLRLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se

houver falha de seqr Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletivar O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia acksindividuais para cada pacote

r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador

estourar retransmite apenas o pacote correspondente

3 Camada de Transporte 43

Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)

r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes

pendentes3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simplesr usa apenas ACK sempre envia

ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do

expectedseqnum

r pacotes fora de ordem m descarta (natildeo armazena) -gt

receptor natildeo usa buffersm reconhece pacote com o

nuacutemero de sequecircncia mais alto em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1

receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1

receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva

r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para

posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais

um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK

r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletiva

dados de cimar se proacutex no de seq (n)

disponiacutevel estiver na janela envia o pacote e liga temporizador(n)

estouro do temporizador(n)r reenvia pacote n reinicia

temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como

ldquorecebidordquor se n for menor pacote natildeo

reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

r ACK(n)senatildeor ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 5: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Protocolos da camada de transporte Internet

r entrega confiaacutevel ordenada (TCP)m controle de

congestionamentom controle de fluxom estabelecimento de conexatildeo

(ldquosetuprdquo)r entrega natildeo confiaacutevel natildeo

ordenada UDPm extensatildeo sem ldquogordurasrdquo do

ldquomelhor esforccedilordquo do IPr serviccedilos natildeo disponiacuteveis

m garantias de atraso maacuteximom garantias de largura de

banda miacutenima

aplicaccedilatildeotransporte

redeenlacefiacutesica

redeenlacefiacutesica

aplicaccedilatildeotransporte

redeenlacefiacutesica

redeenlacefiacutesica

redeenlacefiacutesica

redeenlacefiacutesica

redeenlacefiacutesica

transporte loacutegico fim a fim

3 Camada de Transporte 5

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 6

Multiplexaccedilatildeodemultiplexaccedilatildeo

Usa info do cabeccedilalho para entregar os segmentos recebidos aos sockets corretos

Demultiplexaccedilatildeo no receptorreuacutene dados de muitos sockets adiciona o cabeccedilalho de transporte (usado posteriormente para a demultiplexaccedilatildeo)

Multiplexaccedilatildeo no transm

processo

sockettransporte

aplicaccedilatildeo

fiacutesicaenlacerede

P2P1

transporte

aplicaccedilatildeo

fiacutesicaenlacerede

P4transporte

aplicaccedilatildeo

fiacutesicaenlacerede

P3

3 Camada de Transporte 7

r computador recebe os datagramas IPm cada datagrama possui

os endereccedilos IP da origem e do destino

m cada datagramatransporta um segmento da camada de transporte

m cada segmento possui nuacutemeros das portas origem e destino

r O hospedeiro usa os endereccedilos IP e os nuacutemeros das portas para direcionar o segmento ao socket apropriado

Como funciona a demultiplexaccedilatildeo

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(mensagempayload)

outros campos do cabeccedilalho

formato de segmentoTCPUDP

3 Camada de Transporte 8

Demultiplexaccedilatildeo natildeo orientada a conexotildeesr Lembrete socket criado possui

nuacutemero de porta local ao hostDatagramSocket mySocket1 = new

DatagramSocket(12534)

r Datagramas IP com mesmo no de porta destino masdiferentes endereccedilos IP origem eou nuacutemeros de porta origem podem ser encaminhados para o mesmo socket no destino

3 Camada de Transporte 9

r Quando o hospedeiro recebe o segmento UDPm verifica no da porta de

destino no segmentom encaminha o segmento UDP

para o socket com aquele no de porta

r Lembrete ao criar um datagrama para enviar para um socket UDP deve especificarm Endereccedilo IP de destinom Nuacutemero da porta de destino

Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo

DatagramSocket serverSocket = new DatagramSocket(6428)

transport

application

physicallink

network

P3transport

application

physicallink

network

P1

transport

application

physicallink

network

P4

DatagramSocket mySocket1 = new DatagramSocket (5775)

DatagramSocketmySocket2 = new DatagramSocket(9157)

source port 9157dest port 6428

source port 6428dest port 9157

source port dest port

source port dest port

3 Camada de Transporte 10

Demultiplexaccedilatildeo Orientada a Conexotildees

r Socket TCP identificado pela quaacutedrupla m endereccedilo IP origemm nuacutemero da porta origemm endereccedilo IP destinom nuacutemero da porta destino

r Demultiplexaccedilatildeo receptor usa todos os quatro valores para direcionar o segmento para o socket apropriado

r Servidor pode dar suporte a muitos sockets TCP simultacircneos m cada socket eacute identificado

pela sua proacutepria quaacutedruplar Servidores Web tecircm sockets

diferentes para cada conexatildeo de clientem HTTP natildeo persistente teraacute

sockets diferentes para cada pedido

3 Camada de Transporte 11

Demultiplexaccedilatildeo Orientada a Conexotildees exemplo

transport

application

physicallink

network

P3transport

application

physicallink

P4

transport

application

physicallink

network

P2

source IPport A9157dest IP port B80

source IPport B80dest IPport A9157

host IP address A

host IP address C

network

P6P5P3

source IPport C5775dest IPport B80

source IPport C9157dest IPport B80

trecircs segmentos todos destinados ao endereccedilo IP Bdest port 80 satildeo demultiplexados para sockets distintos

server IP address B

3 Camada de Transporte 12

Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads

transport

application

physicallink

network

P3transport

application

physicallink

transport

application

physicallink

network

P2

source IPport A9157dest IP port B80

source IPport B80dest IPport A9157

host IP address A

host IP address C

server IP address B

network

P3

source IPport C5775dest IPport B80

source IPport C9157dest IPport B80

P4

Servidor com threads

3 Camada de Transporte 13

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 14

UDP User Datagram Protocol [RFC 768]

r Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo

r Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem serm perdidosm entregues agrave aplicaccedilatildeo fora

de ordemr sem conexatildeo

m natildeo haacute saudaccedilatildeo inicial entre o remetente e o receptor UDP

m tratamento independente para cada segmento UDP

r Uso do UDPm aplicaccedilotildees de streaming

multimiacutedia (tolerante a perdas sensiacutevel a taxas)

m DNSm SNMP

r transferecircncia confiaacutevel sobre UDPm adiciona confiabilidade na

camada de aplicaccedilatildeom recuperaccedilatildeo de erros

especiacutefica da aplicaccedilatildeo

3 Camada de Transporte 15

UDP Cabeccedilalho do segmento

porta origem porta dest

32 bits

Dados de aplicaccedilatildeo

(mensagem)

Formato do segmento UDP

comprimento checksum

Comprimento em bytes dosegmento UDP

incluindo cabeccedilalho Por quecirc existe um UDPr elimina estabelecimento de

conexatildeo (que pode causar retardo)

r simples natildeo manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor

r cabeccedilalho de segmento reduzido

r Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)

3 Camada de Transporte 16

Soma de Verificaccedilatildeo (checksum)UDP

Transmissorr trata conteuacutedo do

segmento como sequecircncia de inteiros de 16-bits

r checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento

r transmissor coloca complemento do valor da soma no campo checksumdo UDP

Receptorr calcula checksum do

segmento recebidor verifica se o checksum

calculado bate com o valor recebidom NAtildeO - erro detectadom SIM - nenhum erro

detectado Mas ainda pode ter erros Veja depois hellip

Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido

3 Camada de Transporte 17

Exemplo do Checksum Internetr 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

transbordo

somasoma de

verificaccedilatildeo

3 Camada de Transporte 18

Note que ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 19

Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)r importante nas

camadas de transporte e de enlace

r na lista dos 10 toacutepicos mais importantes em redes

r caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)

3 Camada de Transporte 20

Transferecircncia confiaacutevel o ponto de partida

ladotransmissor

ladoreceptor

rdt_send() chamada de cima (ex pela apl) Passa dados p serem

entregues agrave camada sup do receptor

udt_send() chamada pelo rdt para transferir um pacotes para o receptor sobre um canal natildeo

confiaacutevel

rdt_rcv() chamada quando pacote chega no lado receptor do

canal

deliver_data() chamada pelordt para entregar dados p camada

superior

3 Camada de Transporte 21

Transferecircncia confiaacutevel o ponto de partidaIremosr desenvolver incrementalmente os lados transmissor e receptor

de um protocolo confiaacutevel de transferecircncia de dados (rdt)r considerar apenas fluxo unidirecional de dados

m mas info de controle flui em ambos os sentidosr Usar maacutequinas de estados finitos (FSM) p especificar os

protocolos transmissor e receptor

estado1

estado2

evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado

estado neste ldquoestadordquo o proacuteximo estado eacute

determinado unicamente pelo proacuteximo evento

eventoaccedilotildees

3 Camada de Transporte 22

rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis

r canal de transmissatildeo perfeitamente confiaacutevelm natildeo haacute erros de bitsm natildeo haacute perda de pacotes

r FSMs separadas para transmissor e receptorm transmissor envia dados

pelo canal subjacentem receptor lecirc os dados do

canal subjacente

3 Camada de Transporte 23

rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote

m lembrete checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros

Como as pessoas recuperam ldquoerrosrdquodurante uma conversa

3 Camada de Transporte 24

rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote

m lembre-se checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros

m reconhecimentos (ACKs) receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente

m reconhecimentos negativos (NAKs) receptor avisa explicitamente ao transmissor que o pacote tinha erros

m transmissor reenvia o pacote ao receber um NAKr novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10)

m detecccedilatildeo de errosm Realimentaccedilatildeo (feedback) mensagens de controle (ACKNAK) do

receptor para o transmissor

3 Camada de Transporte 25

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

Animaccedilatildeo no slide

seguinte

rdt20 operaccedilatildeo com ausecircncia de erros

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 27

transmissor

receptor

rdt20 cenaacuterio de erro

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

r Transmissor natildeo sabe o que se passou no receptor

r natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas r transmissor retransmite o

uacuteltimo pacote se ACKNAK chegar com erro

r transmissor inclui nuacutemero de sequecircncia em cada pacote

r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda respostado receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

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

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

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

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeo

Transmissorr no de seq no pacoter bastam dois nos de

seq (01) Por quecircr deve verificar se

ACKNAK recebidos estatildeo corrompidos

r duplicou o no de estadosm estado deve ldquolembrarrdquo

se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptorr deve verificar se o

pacote recebido eacute uma duplicatam estado indica se no de

seq esperado eacute 0 ou 1r nota receptor natildeo tem

como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs

r mesma funcionalidade do rdt21 usando apenas ACKs

r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq

do pacote reconhecidor ACKs duplicados no transmissor resultam

na mesma accedilatildeo do NAK retransmissatildeo do pacote atual

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 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)

aguarda ACK

0fragmento FSMdo transmissor

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

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

r retransmite se nenhum ACK for recebido neste intervalo

r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

m receptor deve especificar no de seq do pacote sendo reconhecido

r requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1

ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30

r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15

ms pacote de 8000 bits

r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

r protocolo limita uso dos recursos fiacutesicos

U sender =

00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 ===RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx ==+

=RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios

pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor

r 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

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

000810008300240

RTT3

tx ==+

acute=

RLRLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se

houver falha de seqr Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletivar O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia acksindividuais para cada pacote

r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador

estourar retransmite apenas o pacote correspondente

3 Camada de Transporte 43

Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)

r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes

pendentes3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simplesr usa apenas ACK sempre envia

ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do

expectedseqnum

r pacotes fora de ordem m descarta (natildeo armazena) -gt

receptor natildeo usa buffersm reconhece pacote com o

nuacutemero de sequecircncia mais alto em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1

receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1

receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva

r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para

posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais

um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK

r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletiva

dados de cimar se proacutex no de seq (n)

disponiacutevel estiver na janela envia o pacote e liga temporizador(n)

estouro do temporizador(n)r reenvia pacote n reinicia

temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como

ldquorecebidordquor se n for menor pacote natildeo

reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

r ACK(n)senatildeor ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 6: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 6

Multiplexaccedilatildeodemultiplexaccedilatildeo

Usa info do cabeccedilalho para entregar os segmentos recebidos aos sockets corretos

Demultiplexaccedilatildeo no receptorreuacutene dados de muitos sockets adiciona o cabeccedilalho de transporte (usado posteriormente para a demultiplexaccedilatildeo)

Multiplexaccedilatildeo no transm

processo

sockettransporte

aplicaccedilatildeo

fiacutesicaenlacerede

P2P1

transporte

aplicaccedilatildeo

fiacutesicaenlacerede

P4transporte

aplicaccedilatildeo

fiacutesicaenlacerede

P3

3 Camada de Transporte 7

r computador recebe os datagramas IPm cada datagrama possui

os endereccedilos IP da origem e do destino

m cada datagramatransporta um segmento da camada de transporte

m cada segmento possui nuacutemeros das portas origem e destino

r O hospedeiro usa os endereccedilos IP e os nuacutemeros das portas para direcionar o segmento ao socket apropriado

Como funciona a demultiplexaccedilatildeo

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(mensagempayload)

outros campos do cabeccedilalho

formato de segmentoTCPUDP

3 Camada de Transporte 8

Demultiplexaccedilatildeo natildeo orientada a conexotildeesr Lembrete socket criado possui

nuacutemero de porta local ao hostDatagramSocket mySocket1 = new

DatagramSocket(12534)

r Datagramas IP com mesmo no de porta destino masdiferentes endereccedilos IP origem eou nuacutemeros de porta origem podem ser encaminhados para o mesmo socket no destino

3 Camada de Transporte 9

r Quando o hospedeiro recebe o segmento UDPm verifica no da porta de

destino no segmentom encaminha o segmento UDP

para o socket com aquele no de porta

r Lembrete ao criar um datagrama para enviar para um socket UDP deve especificarm Endereccedilo IP de destinom Nuacutemero da porta de destino

Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo

DatagramSocket serverSocket = new DatagramSocket(6428)

transport

application

physicallink

network

P3transport

application

physicallink

network

P1

transport

application

physicallink

network

P4

DatagramSocket mySocket1 = new DatagramSocket (5775)

DatagramSocketmySocket2 = new DatagramSocket(9157)

source port 9157dest port 6428

source port 6428dest port 9157

source port dest port

source port dest port

3 Camada de Transporte 10

Demultiplexaccedilatildeo Orientada a Conexotildees

r Socket TCP identificado pela quaacutedrupla m endereccedilo IP origemm nuacutemero da porta origemm endereccedilo IP destinom nuacutemero da porta destino

r Demultiplexaccedilatildeo receptor usa todos os quatro valores para direcionar o segmento para o socket apropriado

r Servidor pode dar suporte a muitos sockets TCP simultacircneos m cada socket eacute identificado

pela sua proacutepria quaacutedruplar Servidores Web tecircm sockets

diferentes para cada conexatildeo de clientem HTTP natildeo persistente teraacute

sockets diferentes para cada pedido

3 Camada de Transporte 11

Demultiplexaccedilatildeo Orientada a Conexotildees exemplo

transport

application

physicallink

network

P3transport

application

physicallink

P4

transport

application

physicallink

network

P2

source IPport A9157dest IP port B80

source IPport B80dest IPport A9157

host IP address A

host IP address C

network

P6P5P3

source IPport C5775dest IPport B80

source IPport C9157dest IPport B80

trecircs segmentos todos destinados ao endereccedilo IP Bdest port 80 satildeo demultiplexados para sockets distintos

server IP address B

3 Camada de Transporte 12

Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads

transport

application

physicallink

network

P3transport

application

physicallink

transport

application

physicallink

network

P2

source IPport A9157dest IP port B80

source IPport B80dest IPport A9157

host IP address A

host IP address C

server IP address B

network

P3

source IPport C5775dest IPport B80

source IPport C9157dest IPport B80

P4

Servidor com threads

3 Camada de Transporte 13

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 14

UDP User Datagram Protocol [RFC 768]

r Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo

r Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem serm perdidosm entregues agrave aplicaccedilatildeo fora

de ordemr sem conexatildeo

m natildeo haacute saudaccedilatildeo inicial entre o remetente e o receptor UDP

m tratamento independente para cada segmento UDP

r Uso do UDPm aplicaccedilotildees de streaming

multimiacutedia (tolerante a perdas sensiacutevel a taxas)

m DNSm SNMP

r transferecircncia confiaacutevel sobre UDPm adiciona confiabilidade na

camada de aplicaccedilatildeom recuperaccedilatildeo de erros

especiacutefica da aplicaccedilatildeo

3 Camada de Transporte 15

UDP Cabeccedilalho do segmento

porta origem porta dest

32 bits

Dados de aplicaccedilatildeo

(mensagem)

Formato do segmento UDP

comprimento checksum

Comprimento em bytes dosegmento UDP

incluindo cabeccedilalho Por quecirc existe um UDPr elimina estabelecimento de

conexatildeo (que pode causar retardo)

r simples natildeo manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor

r cabeccedilalho de segmento reduzido

r Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)

3 Camada de Transporte 16

Soma de Verificaccedilatildeo (checksum)UDP

Transmissorr trata conteuacutedo do

segmento como sequecircncia de inteiros de 16-bits

r checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento

r transmissor coloca complemento do valor da soma no campo checksumdo UDP

Receptorr calcula checksum do

segmento recebidor verifica se o checksum

calculado bate com o valor recebidom NAtildeO - erro detectadom SIM - nenhum erro

detectado Mas ainda pode ter erros Veja depois hellip

Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido

3 Camada de Transporte 17

Exemplo do Checksum Internetr 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

transbordo

somasoma de

verificaccedilatildeo

3 Camada de Transporte 18

Note que ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 19

Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)r importante nas

camadas de transporte e de enlace

r na lista dos 10 toacutepicos mais importantes em redes

r caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)

3 Camada de Transporte 20

Transferecircncia confiaacutevel o ponto de partida

ladotransmissor

ladoreceptor

rdt_send() chamada de cima (ex pela apl) Passa dados p serem

entregues agrave camada sup do receptor

udt_send() chamada pelo rdt para transferir um pacotes para o receptor sobre um canal natildeo

confiaacutevel

rdt_rcv() chamada quando pacote chega no lado receptor do

canal

deliver_data() chamada pelordt para entregar dados p camada

superior

3 Camada de Transporte 21

Transferecircncia confiaacutevel o ponto de partidaIremosr desenvolver incrementalmente os lados transmissor e receptor

de um protocolo confiaacutevel de transferecircncia de dados (rdt)r considerar apenas fluxo unidirecional de dados

m mas info de controle flui em ambos os sentidosr Usar maacutequinas de estados finitos (FSM) p especificar os

protocolos transmissor e receptor

estado1

estado2

evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado

estado neste ldquoestadordquo o proacuteximo estado eacute

determinado unicamente pelo proacuteximo evento

eventoaccedilotildees

3 Camada de Transporte 22

rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis

r canal de transmissatildeo perfeitamente confiaacutevelm natildeo haacute erros de bitsm natildeo haacute perda de pacotes

r FSMs separadas para transmissor e receptorm transmissor envia dados

pelo canal subjacentem receptor lecirc os dados do

canal subjacente

3 Camada de Transporte 23

rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote

m lembrete checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros

Como as pessoas recuperam ldquoerrosrdquodurante uma conversa

3 Camada de Transporte 24

rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote

m lembre-se checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros

m reconhecimentos (ACKs) receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente

m reconhecimentos negativos (NAKs) receptor avisa explicitamente ao transmissor que o pacote tinha erros

m transmissor reenvia o pacote ao receber um NAKr novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10)

m detecccedilatildeo de errosm Realimentaccedilatildeo (feedback) mensagens de controle (ACKNAK) do

receptor para o transmissor

3 Camada de Transporte 25

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

Animaccedilatildeo no slide

seguinte

rdt20 operaccedilatildeo com ausecircncia de erros

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 27

transmissor

receptor

rdt20 cenaacuterio de erro

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

r Transmissor natildeo sabe o que se passou no receptor

r natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas r transmissor retransmite o

uacuteltimo pacote se ACKNAK chegar com erro

r transmissor inclui nuacutemero de sequecircncia em cada pacote

r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda respostado receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

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

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

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

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeo

Transmissorr no de seq no pacoter bastam dois nos de

seq (01) Por quecircr deve verificar se

ACKNAK recebidos estatildeo corrompidos

r duplicou o no de estadosm estado deve ldquolembrarrdquo

se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptorr deve verificar se o

pacote recebido eacute uma duplicatam estado indica se no de

seq esperado eacute 0 ou 1r nota receptor natildeo tem

como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs

r mesma funcionalidade do rdt21 usando apenas ACKs

r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq

do pacote reconhecidor ACKs duplicados no transmissor resultam

na mesma accedilatildeo do NAK retransmissatildeo do pacote atual

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 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)

aguarda ACK

0fragmento FSMdo transmissor

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

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

r retransmite se nenhum ACK for recebido neste intervalo

r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

m receptor deve especificar no de seq do pacote sendo reconhecido

r requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1

ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30

r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15

ms pacote de 8000 bits

r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

r protocolo limita uso dos recursos fiacutesicos

U sender =

00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 ===RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx ==+

=RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios

pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor

r 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

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

000810008300240

RTT3

tx ==+

acute=

RLRLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se

houver falha de seqr Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletivar O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia acksindividuais para cada pacote

r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador

estourar retransmite apenas o pacote correspondente

3 Camada de Transporte 43

Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)

r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes

pendentes3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simplesr usa apenas ACK sempre envia

ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do

expectedseqnum

r pacotes fora de ordem m descarta (natildeo armazena) -gt

receptor natildeo usa buffersm reconhece pacote com o

nuacutemero de sequecircncia mais alto em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1

receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1

receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva

r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para

posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais

um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK

r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletiva

dados de cimar se proacutex no de seq (n)

disponiacutevel estiver na janela envia o pacote e liga temporizador(n)

estouro do temporizador(n)r reenvia pacote n reinicia

temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como

ldquorecebidordquor se n for menor pacote natildeo

reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

r ACK(n)senatildeor ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 7: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Multiplexaccedilatildeodemultiplexaccedilatildeo

Usa info do cabeccedilalho para entregar os segmentos recebidos aos sockets corretos

Demultiplexaccedilatildeo no receptorreuacutene dados de muitos sockets adiciona o cabeccedilalho de transporte (usado posteriormente para a demultiplexaccedilatildeo)

Multiplexaccedilatildeo no transm

processo

sockettransporte

aplicaccedilatildeo

fiacutesicaenlacerede

P2P1

transporte

aplicaccedilatildeo

fiacutesicaenlacerede

P4transporte

aplicaccedilatildeo

fiacutesicaenlacerede

P3

3 Camada de Transporte 7

r computador recebe os datagramas IPm cada datagrama possui

os endereccedilos IP da origem e do destino

m cada datagramatransporta um segmento da camada de transporte

m cada segmento possui nuacutemeros das portas origem e destino

r O hospedeiro usa os endereccedilos IP e os nuacutemeros das portas para direcionar o segmento ao socket apropriado

Como funciona a demultiplexaccedilatildeo

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(mensagempayload)

outros campos do cabeccedilalho

formato de segmentoTCPUDP

3 Camada de Transporte 8

Demultiplexaccedilatildeo natildeo orientada a conexotildeesr Lembrete socket criado possui

nuacutemero de porta local ao hostDatagramSocket mySocket1 = new

DatagramSocket(12534)

r Datagramas IP com mesmo no de porta destino masdiferentes endereccedilos IP origem eou nuacutemeros de porta origem podem ser encaminhados para o mesmo socket no destino

3 Camada de Transporte 9

r Quando o hospedeiro recebe o segmento UDPm verifica no da porta de

destino no segmentom encaminha o segmento UDP

para o socket com aquele no de porta

r Lembrete ao criar um datagrama para enviar para um socket UDP deve especificarm Endereccedilo IP de destinom Nuacutemero da porta de destino

Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo

DatagramSocket serverSocket = new DatagramSocket(6428)

transport

application

physicallink

network

P3transport

application

physicallink

network

P1

transport

application

physicallink

network

P4

DatagramSocket mySocket1 = new DatagramSocket (5775)

DatagramSocketmySocket2 = new DatagramSocket(9157)

source port 9157dest port 6428

source port 6428dest port 9157

source port dest port

source port dest port

3 Camada de Transporte 10

Demultiplexaccedilatildeo Orientada a Conexotildees

r Socket TCP identificado pela quaacutedrupla m endereccedilo IP origemm nuacutemero da porta origemm endereccedilo IP destinom nuacutemero da porta destino

r Demultiplexaccedilatildeo receptor usa todos os quatro valores para direcionar o segmento para o socket apropriado

r Servidor pode dar suporte a muitos sockets TCP simultacircneos m cada socket eacute identificado

pela sua proacutepria quaacutedruplar Servidores Web tecircm sockets

diferentes para cada conexatildeo de clientem HTTP natildeo persistente teraacute

sockets diferentes para cada pedido

3 Camada de Transporte 11

Demultiplexaccedilatildeo Orientada a Conexotildees exemplo

transport

application

physicallink

network

P3transport

application

physicallink

P4

transport

application

physicallink

network

P2

source IPport A9157dest IP port B80

source IPport B80dest IPport A9157

host IP address A

host IP address C

network

P6P5P3

source IPport C5775dest IPport B80

source IPport C9157dest IPport B80

trecircs segmentos todos destinados ao endereccedilo IP Bdest port 80 satildeo demultiplexados para sockets distintos

server IP address B

3 Camada de Transporte 12

Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads

transport

application

physicallink

network

P3transport

application

physicallink

transport

application

physicallink

network

P2

source IPport A9157dest IP port B80

source IPport B80dest IPport A9157

host IP address A

host IP address C

server IP address B

network

P3

source IPport C5775dest IPport B80

source IPport C9157dest IPport B80

P4

Servidor com threads

3 Camada de Transporte 13

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 14

UDP User Datagram Protocol [RFC 768]

r Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo

r Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem serm perdidosm entregues agrave aplicaccedilatildeo fora

de ordemr sem conexatildeo

m natildeo haacute saudaccedilatildeo inicial entre o remetente e o receptor UDP

m tratamento independente para cada segmento UDP

r Uso do UDPm aplicaccedilotildees de streaming

multimiacutedia (tolerante a perdas sensiacutevel a taxas)

m DNSm SNMP

r transferecircncia confiaacutevel sobre UDPm adiciona confiabilidade na

camada de aplicaccedilatildeom recuperaccedilatildeo de erros

especiacutefica da aplicaccedilatildeo

3 Camada de Transporte 15

UDP Cabeccedilalho do segmento

porta origem porta dest

32 bits

Dados de aplicaccedilatildeo

(mensagem)

Formato do segmento UDP

comprimento checksum

Comprimento em bytes dosegmento UDP

incluindo cabeccedilalho Por quecirc existe um UDPr elimina estabelecimento de

conexatildeo (que pode causar retardo)

r simples natildeo manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor

r cabeccedilalho de segmento reduzido

r Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)

3 Camada de Transporte 16

Soma de Verificaccedilatildeo (checksum)UDP

Transmissorr trata conteuacutedo do

segmento como sequecircncia de inteiros de 16-bits

r checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento

r transmissor coloca complemento do valor da soma no campo checksumdo UDP

Receptorr calcula checksum do

segmento recebidor verifica se o checksum

calculado bate com o valor recebidom NAtildeO - erro detectadom SIM - nenhum erro

detectado Mas ainda pode ter erros Veja depois hellip

Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido

3 Camada de Transporte 17

Exemplo do Checksum Internetr 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

transbordo

somasoma de

verificaccedilatildeo

3 Camada de Transporte 18

Note que ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 19

Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)r importante nas

camadas de transporte e de enlace

r na lista dos 10 toacutepicos mais importantes em redes

r caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)

3 Camada de Transporte 20

Transferecircncia confiaacutevel o ponto de partida

ladotransmissor

ladoreceptor

rdt_send() chamada de cima (ex pela apl) Passa dados p serem

entregues agrave camada sup do receptor

udt_send() chamada pelo rdt para transferir um pacotes para o receptor sobre um canal natildeo

confiaacutevel

rdt_rcv() chamada quando pacote chega no lado receptor do

canal

deliver_data() chamada pelordt para entregar dados p camada

superior

3 Camada de Transporte 21

Transferecircncia confiaacutevel o ponto de partidaIremosr desenvolver incrementalmente os lados transmissor e receptor

de um protocolo confiaacutevel de transferecircncia de dados (rdt)r considerar apenas fluxo unidirecional de dados

m mas info de controle flui em ambos os sentidosr Usar maacutequinas de estados finitos (FSM) p especificar os

protocolos transmissor e receptor

estado1

estado2

evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado

estado neste ldquoestadordquo o proacuteximo estado eacute

determinado unicamente pelo proacuteximo evento

eventoaccedilotildees

3 Camada de Transporte 22

rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis

r canal de transmissatildeo perfeitamente confiaacutevelm natildeo haacute erros de bitsm natildeo haacute perda de pacotes

r FSMs separadas para transmissor e receptorm transmissor envia dados

pelo canal subjacentem receptor lecirc os dados do

canal subjacente

3 Camada de Transporte 23

rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote

m lembrete checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros

Como as pessoas recuperam ldquoerrosrdquodurante uma conversa

3 Camada de Transporte 24

rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote

m lembre-se checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros

m reconhecimentos (ACKs) receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente

m reconhecimentos negativos (NAKs) receptor avisa explicitamente ao transmissor que o pacote tinha erros

m transmissor reenvia o pacote ao receber um NAKr novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10)

m detecccedilatildeo de errosm Realimentaccedilatildeo (feedback) mensagens de controle (ACKNAK) do

receptor para o transmissor

3 Camada de Transporte 25

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

Animaccedilatildeo no slide

seguinte

rdt20 operaccedilatildeo com ausecircncia de erros

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 27

transmissor

receptor

rdt20 cenaacuterio de erro

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

r Transmissor natildeo sabe o que se passou no receptor

r natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas r transmissor retransmite o

uacuteltimo pacote se ACKNAK chegar com erro

r transmissor inclui nuacutemero de sequecircncia em cada pacote

r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda respostado receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

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

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

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

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeo

Transmissorr no de seq no pacoter bastam dois nos de

seq (01) Por quecircr deve verificar se

ACKNAK recebidos estatildeo corrompidos

r duplicou o no de estadosm estado deve ldquolembrarrdquo

se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptorr deve verificar se o

pacote recebido eacute uma duplicatam estado indica se no de

seq esperado eacute 0 ou 1r nota receptor natildeo tem

como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs

r mesma funcionalidade do rdt21 usando apenas ACKs

r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq

do pacote reconhecidor ACKs duplicados no transmissor resultam

na mesma accedilatildeo do NAK retransmissatildeo do pacote atual

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 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)

aguarda ACK

0fragmento FSMdo transmissor

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

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

r retransmite se nenhum ACK for recebido neste intervalo

r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

m receptor deve especificar no de seq do pacote sendo reconhecido

r requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1

ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30

r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15

ms pacote de 8000 bits

r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

r protocolo limita uso dos recursos fiacutesicos

U sender =

00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 ===RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx ==+

=RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios

pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor

r 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

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

000810008300240

RTT3

tx ==+

acute=

RLRLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se

houver falha de seqr Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletivar O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia acksindividuais para cada pacote

r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador

estourar retransmite apenas o pacote correspondente

3 Camada de Transporte 43

Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)

r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes

pendentes3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simplesr usa apenas ACK sempre envia

ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do

expectedseqnum

r pacotes fora de ordem m descarta (natildeo armazena) -gt

receptor natildeo usa buffersm reconhece pacote com o

nuacutemero de sequecircncia mais alto em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1

receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1

receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva

r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para

posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais

um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK

r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletiva

dados de cimar se proacutex no de seq (n)

disponiacutevel estiver na janela envia o pacote e liga temporizador(n)

estouro do temporizador(n)r reenvia pacote n reinicia

temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como

ldquorecebidordquor se n for menor pacote natildeo

reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

r ACK(n)senatildeor ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 8: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

r computador recebe os datagramas IPm cada datagrama possui

os endereccedilos IP da origem e do destino

m cada datagramatransporta um segmento da camada de transporte

m cada segmento possui nuacutemeros das portas origem e destino

r O hospedeiro usa os endereccedilos IP e os nuacutemeros das portas para direcionar o segmento ao socket apropriado

Como funciona a demultiplexaccedilatildeo

porta origem porta destino

32 bits

dados daaplicaccedilatildeo

(mensagempayload)

outros campos do cabeccedilalho

formato de segmentoTCPUDP

3 Camada de Transporte 8

Demultiplexaccedilatildeo natildeo orientada a conexotildeesr Lembrete socket criado possui

nuacutemero de porta local ao hostDatagramSocket mySocket1 = new

DatagramSocket(12534)

r Datagramas IP com mesmo no de porta destino masdiferentes endereccedilos IP origem eou nuacutemeros de porta origem podem ser encaminhados para o mesmo socket no destino

3 Camada de Transporte 9

r Quando o hospedeiro recebe o segmento UDPm verifica no da porta de

destino no segmentom encaminha o segmento UDP

para o socket com aquele no de porta

r Lembrete ao criar um datagrama para enviar para um socket UDP deve especificarm Endereccedilo IP de destinom Nuacutemero da porta de destino

Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo

DatagramSocket serverSocket = new DatagramSocket(6428)

transport

application

physicallink

network

P3transport

application

physicallink

network

P1

transport

application

physicallink

network

P4

DatagramSocket mySocket1 = new DatagramSocket (5775)

DatagramSocketmySocket2 = new DatagramSocket(9157)

source port 9157dest port 6428

source port 6428dest port 9157

source port dest port

source port dest port

3 Camada de Transporte 10

Demultiplexaccedilatildeo Orientada a Conexotildees

r Socket TCP identificado pela quaacutedrupla m endereccedilo IP origemm nuacutemero da porta origemm endereccedilo IP destinom nuacutemero da porta destino

r Demultiplexaccedilatildeo receptor usa todos os quatro valores para direcionar o segmento para o socket apropriado

r Servidor pode dar suporte a muitos sockets TCP simultacircneos m cada socket eacute identificado

pela sua proacutepria quaacutedruplar Servidores Web tecircm sockets

diferentes para cada conexatildeo de clientem HTTP natildeo persistente teraacute

sockets diferentes para cada pedido

3 Camada de Transporte 11

Demultiplexaccedilatildeo Orientada a Conexotildees exemplo

transport

application

physicallink

network

P3transport

application

physicallink

P4

transport

application

physicallink

network

P2

source IPport A9157dest IP port B80

source IPport B80dest IPport A9157

host IP address A

host IP address C

network

P6P5P3

source IPport C5775dest IPport B80

source IPport C9157dest IPport B80

trecircs segmentos todos destinados ao endereccedilo IP Bdest port 80 satildeo demultiplexados para sockets distintos

server IP address B

3 Camada de Transporte 12

Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads

transport

application

physicallink

network

P3transport

application

physicallink

transport

application

physicallink

network

P2

source IPport A9157dest IP port B80

source IPport B80dest IPport A9157

host IP address A

host IP address C

server IP address B

network

P3

source IPport C5775dest IPport B80

source IPport C9157dest IPport B80

P4

Servidor com threads

3 Camada de Transporte 13

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 14

UDP User Datagram Protocol [RFC 768]

r Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo

r Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem serm perdidosm entregues agrave aplicaccedilatildeo fora

de ordemr sem conexatildeo

m natildeo haacute saudaccedilatildeo inicial entre o remetente e o receptor UDP

m tratamento independente para cada segmento UDP

r Uso do UDPm aplicaccedilotildees de streaming

multimiacutedia (tolerante a perdas sensiacutevel a taxas)

m DNSm SNMP

r transferecircncia confiaacutevel sobre UDPm adiciona confiabilidade na

camada de aplicaccedilatildeom recuperaccedilatildeo de erros

especiacutefica da aplicaccedilatildeo

3 Camada de Transporte 15

UDP Cabeccedilalho do segmento

porta origem porta dest

32 bits

Dados de aplicaccedilatildeo

(mensagem)

Formato do segmento UDP

comprimento checksum

Comprimento em bytes dosegmento UDP

incluindo cabeccedilalho Por quecirc existe um UDPr elimina estabelecimento de

conexatildeo (que pode causar retardo)

r simples natildeo manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor

r cabeccedilalho de segmento reduzido

r Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)

3 Camada de Transporte 16

Soma de Verificaccedilatildeo (checksum)UDP

Transmissorr trata conteuacutedo do

segmento como sequecircncia de inteiros de 16-bits

r checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento

r transmissor coloca complemento do valor da soma no campo checksumdo UDP

Receptorr calcula checksum do

segmento recebidor verifica se o checksum

calculado bate com o valor recebidom NAtildeO - erro detectadom SIM - nenhum erro

detectado Mas ainda pode ter erros Veja depois hellip

Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido

3 Camada de Transporte 17

Exemplo do Checksum Internetr 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

transbordo

somasoma de

verificaccedilatildeo

3 Camada de Transporte 18

Note que ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 19

Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)r importante nas

camadas de transporte e de enlace

r na lista dos 10 toacutepicos mais importantes em redes

r caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)

3 Camada de Transporte 20

Transferecircncia confiaacutevel o ponto de partida

ladotransmissor

ladoreceptor

rdt_send() chamada de cima (ex pela apl) Passa dados p serem

entregues agrave camada sup do receptor

udt_send() chamada pelo rdt para transferir um pacotes para o receptor sobre um canal natildeo

confiaacutevel

rdt_rcv() chamada quando pacote chega no lado receptor do

canal

deliver_data() chamada pelordt para entregar dados p camada

superior

3 Camada de Transporte 21

Transferecircncia confiaacutevel o ponto de partidaIremosr desenvolver incrementalmente os lados transmissor e receptor

de um protocolo confiaacutevel de transferecircncia de dados (rdt)r considerar apenas fluxo unidirecional de dados

m mas info de controle flui em ambos os sentidosr Usar maacutequinas de estados finitos (FSM) p especificar os

protocolos transmissor e receptor

estado1

estado2

evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado

estado neste ldquoestadordquo o proacuteximo estado eacute

determinado unicamente pelo proacuteximo evento

eventoaccedilotildees

3 Camada de Transporte 22

rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis

r canal de transmissatildeo perfeitamente confiaacutevelm natildeo haacute erros de bitsm natildeo haacute perda de pacotes

r FSMs separadas para transmissor e receptorm transmissor envia dados

pelo canal subjacentem receptor lecirc os dados do

canal subjacente

3 Camada de Transporte 23

rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote

m lembrete checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros

Como as pessoas recuperam ldquoerrosrdquodurante uma conversa

3 Camada de Transporte 24

rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote

m lembre-se checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros

m reconhecimentos (ACKs) receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente

m reconhecimentos negativos (NAKs) receptor avisa explicitamente ao transmissor que o pacote tinha erros

m transmissor reenvia o pacote ao receber um NAKr novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10)

m detecccedilatildeo de errosm Realimentaccedilatildeo (feedback) mensagens de controle (ACKNAK) do

receptor para o transmissor

3 Camada de Transporte 25

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

Animaccedilatildeo no slide

seguinte

rdt20 operaccedilatildeo com ausecircncia de erros

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 27

transmissor

receptor

rdt20 cenaacuterio de erro

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

r Transmissor natildeo sabe o que se passou no receptor

r natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas r transmissor retransmite o

uacuteltimo pacote se ACKNAK chegar com erro

r transmissor inclui nuacutemero de sequecircncia em cada pacote

r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda respostado receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

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

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

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

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeo

Transmissorr no de seq no pacoter bastam dois nos de

seq (01) Por quecircr deve verificar se

ACKNAK recebidos estatildeo corrompidos

r duplicou o no de estadosm estado deve ldquolembrarrdquo

se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptorr deve verificar se o

pacote recebido eacute uma duplicatam estado indica se no de

seq esperado eacute 0 ou 1r nota receptor natildeo tem

como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs

r mesma funcionalidade do rdt21 usando apenas ACKs

r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq

do pacote reconhecidor ACKs duplicados no transmissor resultam

na mesma accedilatildeo do NAK retransmissatildeo do pacote atual

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 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)

aguarda ACK

0fragmento FSMdo transmissor

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

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

r retransmite se nenhum ACK for recebido neste intervalo

r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

m receptor deve especificar no de seq do pacote sendo reconhecido

r requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1

ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30

r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15

ms pacote de 8000 bits

r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

r protocolo limita uso dos recursos fiacutesicos

U sender =

00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 ===RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx ==+

=RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios

pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor

r 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

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

000810008300240

RTT3

tx ==+

acute=

RLRLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se

houver falha de seqr Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletivar O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia acksindividuais para cada pacote

r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador

estourar retransmite apenas o pacote correspondente

3 Camada de Transporte 43

Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)

r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes

pendentes3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simplesr usa apenas ACK sempre envia

ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do

expectedseqnum

r pacotes fora de ordem m descarta (natildeo armazena) -gt

receptor natildeo usa buffersm reconhece pacote com o

nuacutemero de sequecircncia mais alto em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1

receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1

receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva

r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para

posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais

um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK

r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletiva

dados de cimar se proacutex no de seq (n)

disponiacutevel estiver na janela envia o pacote e liga temporizador(n)

estouro do temporizador(n)r reenvia pacote n reinicia

temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como

ldquorecebidordquor se n for menor pacote natildeo

reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

r ACK(n)senatildeor ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 9: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Demultiplexaccedilatildeo natildeo orientada a conexotildeesr Lembrete socket criado possui

nuacutemero de porta local ao hostDatagramSocket mySocket1 = new

DatagramSocket(12534)

r Datagramas IP com mesmo no de porta destino masdiferentes endereccedilos IP origem eou nuacutemeros de porta origem podem ser encaminhados para o mesmo socket no destino

3 Camada de Transporte 9

r Quando o hospedeiro recebe o segmento UDPm verifica no da porta de

destino no segmentom encaminha o segmento UDP

para o socket com aquele no de porta

r Lembrete ao criar um datagrama para enviar para um socket UDP deve especificarm Endereccedilo IP de destinom Nuacutemero da porta de destino

Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo

DatagramSocket serverSocket = new DatagramSocket(6428)

transport

application

physicallink

network

P3transport

application

physicallink

network

P1

transport

application

physicallink

network

P4

DatagramSocket mySocket1 = new DatagramSocket (5775)

DatagramSocketmySocket2 = new DatagramSocket(9157)

source port 9157dest port 6428

source port 6428dest port 9157

source port dest port

source port dest port

3 Camada de Transporte 10

Demultiplexaccedilatildeo Orientada a Conexotildees

r Socket TCP identificado pela quaacutedrupla m endereccedilo IP origemm nuacutemero da porta origemm endereccedilo IP destinom nuacutemero da porta destino

r Demultiplexaccedilatildeo receptor usa todos os quatro valores para direcionar o segmento para o socket apropriado

r Servidor pode dar suporte a muitos sockets TCP simultacircneos m cada socket eacute identificado

pela sua proacutepria quaacutedruplar Servidores Web tecircm sockets

diferentes para cada conexatildeo de clientem HTTP natildeo persistente teraacute

sockets diferentes para cada pedido

3 Camada de Transporte 11

Demultiplexaccedilatildeo Orientada a Conexotildees exemplo

transport

application

physicallink

network

P3transport

application

physicallink

P4

transport

application

physicallink

network

P2

source IPport A9157dest IP port B80

source IPport B80dest IPport A9157

host IP address A

host IP address C

network

P6P5P3

source IPport C5775dest IPport B80

source IPport C9157dest IPport B80

trecircs segmentos todos destinados ao endereccedilo IP Bdest port 80 satildeo demultiplexados para sockets distintos

server IP address B

3 Camada de Transporte 12

Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads

transport

application

physicallink

network

P3transport

application

physicallink

transport

application

physicallink

network

P2

source IPport A9157dest IP port B80

source IPport B80dest IPport A9157

host IP address A

host IP address C

server IP address B

network

P3

source IPport C5775dest IPport B80

source IPport C9157dest IPport B80

P4

Servidor com threads

3 Camada de Transporte 13

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 14

UDP User Datagram Protocol [RFC 768]

r Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo

r Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem serm perdidosm entregues agrave aplicaccedilatildeo fora

de ordemr sem conexatildeo

m natildeo haacute saudaccedilatildeo inicial entre o remetente e o receptor UDP

m tratamento independente para cada segmento UDP

r Uso do UDPm aplicaccedilotildees de streaming

multimiacutedia (tolerante a perdas sensiacutevel a taxas)

m DNSm SNMP

r transferecircncia confiaacutevel sobre UDPm adiciona confiabilidade na

camada de aplicaccedilatildeom recuperaccedilatildeo de erros

especiacutefica da aplicaccedilatildeo

3 Camada de Transporte 15

UDP Cabeccedilalho do segmento

porta origem porta dest

32 bits

Dados de aplicaccedilatildeo

(mensagem)

Formato do segmento UDP

comprimento checksum

Comprimento em bytes dosegmento UDP

incluindo cabeccedilalho Por quecirc existe um UDPr elimina estabelecimento de

conexatildeo (que pode causar retardo)

r simples natildeo manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor

r cabeccedilalho de segmento reduzido

r Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)

3 Camada de Transporte 16

Soma de Verificaccedilatildeo (checksum)UDP

Transmissorr trata conteuacutedo do

segmento como sequecircncia de inteiros de 16-bits

r checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento

r transmissor coloca complemento do valor da soma no campo checksumdo UDP

Receptorr calcula checksum do

segmento recebidor verifica se o checksum

calculado bate com o valor recebidom NAtildeO - erro detectadom SIM - nenhum erro

detectado Mas ainda pode ter erros Veja depois hellip

Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido

3 Camada de Transporte 17

Exemplo do Checksum Internetr 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

transbordo

somasoma de

verificaccedilatildeo

3 Camada de Transporte 18

Note que ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 19

Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)r importante nas

camadas de transporte e de enlace

r na lista dos 10 toacutepicos mais importantes em redes

r caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)

3 Camada de Transporte 20

Transferecircncia confiaacutevel o ponto de partida

ladotransmissor

ladoreceptor

rdt_send() chamada de cima (ex pela apl) Passa dados p serem

entregues agrave camada sup do receptor

udt_send() chamada pelo rdt para transferir um pacotes para o receptor sobre um canal natildeo

confiaacutevel

rdt_rcv() chamada quando pacote chega no lado receptor do

canal

deliver_data() chamada pelordt para entregar dados p camada

superior

3 Camada de Transporte 21

Transferecircncia confiaacutevel o ponto de partidaIremosr desenvolver incrementalmente os lados transmissor e receptor

de um protocolo confiaacutevel de transferecircncia de dados (rdt)r considerar apenas fluxo unidirecional de dados

m mas info de controle flui em ambos os sentidosr Usar maacutequinas de estados finitos (FSM) p especificar os

protocolos transmissor e receptor

estado1

estado2

evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado

estado neste ldquoestadordquo o proacuteximo estado eacute

determinado unicamente pelo proacuteximo evento

eventoaccedilotildees

3 Camada de Transporte 22

rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis

r canal de transmissatildeo perfeitamente confiaacutevelm natildeo haacute erros de bitsm natildeo haacute perda de pacotes

r FSMs separadas para transmissor e receptorm transmissor envia dados

pelo canal subjacentem receptor lecirc os dados do

canal subjacente

3 Camada de Transporte 23

rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote

m lembrete checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros

Como as pessoas recuperam ldquoerrosrdquodurante uma conversa

3 Camada de Transporte 24

rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote

m lembre-se checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros

m reconhecimentos (ACKs) receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente

m reconhecimentos negativos (NAKs) receptor avisa explicitamente ao transmissor que o pacote tinha erros

m transmissor reenvia o pacote ao receber um NAKr novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10)

m detecccedilatildeo de errosm Realimentaccedilatildeo (feedback) mensagens de controle (ACKNAK) do

receptor para o transmissor

3 Camada de Transporte 25

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

Animaccedilatildeo no slide

seguinte

rdt20 operaccedilatildeo com ausecircncia de erros

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 27

transmissor

receptor

rdt20 cenaacuterio de erro

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

r Transmissor natildeo sabe o que se passou no receptor

r natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas r transmissor retransmite o

uacuteltimo pacote se ACKNAK chegar com erro

r transmissor inclui nuacutemero de sequecircncia em cada pacote

r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda respostado receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

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

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

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

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeo

Transmissorr no de seq no pacoter bastam dois nos de

seq (01) Por quecircr deve verificar se

ACKNAK recebidos estatildeo corrompidos

r duplicou o no de estadosm estado deve ldquolembrarrdquo

se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptorr deve verificar se o

pacote recebido eacute uma duplicatam estado indica se no de

seq esperado eacute 0 ou 1r nota receptor natildeo tem

como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs

r mesma funcionalidade do rdt21 usando apenas ACKs

r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq

do pacote reconhecidor ACKs duplicados no transmissor resultam

na mesma accedilatildeo do NAK retransmissatildeo do pacote atual

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 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)

aguarda ACK

0fragmento FSMdo transmissor

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

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

r retransmite se nenhum ACK for recebido neste intervalo

r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

m receptor deve especificar no de seq do pacote sendo reconhecido

r requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1

ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30

r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15

ms pacote de 8000 bits

r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

r protocolo limita uso dos recursos fiacutesicos

U sender =

00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 ===RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx ==+

=RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios

pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor

r 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

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

000810008300240

RTT3

tx ==+

acute=

RLRLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se

houver falha de seqr Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletivar O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia acksindividuais para cada pacote

r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador

estourar retransmite apenas o pacote correspondente

3 Camada de Transporte 43

Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)

r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes

pendentes3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simplesr usa apenas ACK sempre envia

ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do

expectedseqnum

r pacotes fora de ordem m descarta (natildeo armazena) -gt

receptor natildeo usa buffersm reconhece pacote com o

nuacutemero de sequecircncia mais alto em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1

receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1

receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva

r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para

posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais

um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK

r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletiva

dados de cimar se proacutex no de seq (n)

disponiacutevel estiver na janela envia o pacote e liga temporizador(n)

estouro do temporizador(n)r reenvia pacote n reinicia

temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como

ldquorecebidordquor se n for menor pacote natildeo

reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

r ACK(n)senatildeor ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 10: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo

DatagramSocket serverSocket = new DatagramSocket(6428)

transport

application

physicallink

network

P3transport

application

physicallink

network

P1

transport

application

physicallink

network

P4

DatagramSocket mySocket1 = new DatagramSocket (5775)

DatagramSocketmySocket2 = new DatagramSocket(9157)

source port 9157dest port 6428

source port 6428dest port 9157

source port dest port

source port dest port

3 Camada de Transporte 10

Demultiplexaccedilatildeo Orientada a Conexotildees

r Socket TCP identificado pela quaacutedrupla m endereccedilo IP origemm nuacutemero da porta origemm endereccedilo IP destinom nuacutemero da porta destino

r Demultiplexaccedilatildeo receptor usa todos os quatro valores para direcionar o segmento para o socket apropriado

r Servidor pode dar suporte a muitos sockets TCP simultacircneos m cada socket eacute identificado

pela sua proacutepria quaacutedruplar Servidores Web tecircm sockets

diferentes para cada conexatildeo de clientem HTTP natildeo persistente teraacute

sockets diferentes para cada pedido

3 Camada de Transporte 11

Demultiplexaccedilatildeo Orientada a Conexotildees exemplo

transport

application

physicallink

network

P3transport

application

physicallink

P4

transport

application

physicallink

network

P2

source IPport A9157dest IP port B80

source IPport B80dest IPport A9157

host IP address A

host IP address C

network

P6P5P3

source IPport C5775dest IPport B80

source IPport C9157dest IPport B80

trecircs segmentos todos destinados ao endereccedilo IP Bdest port 80 satildeo demultiplexados para sockets distintos

server IP address B

3 Camada de Transporte 12

Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads

transport

application

physicallink

network

P3transport

application

physicallink

transport

application

physicallink

network

P2

source IPport A9157dest IP port B80

source IPport B80dest IPport A9157

host IP address A

host IP address C

server IP address B

network

P3

source IPport C5775dest IPport B80

source IPport C9157dest IPport B80

P4

Servidor com threads

3 Camada de Transporte 13

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 14

UDP User Datagram Protocol [RFC 768]

r Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo

r Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem serm perdidosm entregues agrave aplicaccedilatildeo fora

de ordemr sem conexatildeo

m natildeo haacute saudaccedilatildeo inicial entre o remetente e o receptor UDP

m tratamento independente para cada segmento UDP

r Uso do UDPm aplicaccedilotildees de streaming

multimiacutedia (tolerante a perdas sensiacutevel a taxas)

m DNSm SNMP

r transferecircncia confiaacutevel sobre UDPm adiciona confiabilidade na

camada de aplicaccedilatildeom recuperaccedilatildeo de erros

especiacutefica da aplicaccedilatildeo

3 Camada de Transporte 15

UDP Cabeccedilalho do segmento

porta origem porta dest

32 bits

Dados de aplicaccedilatildeo

(mensagem)

Formato do segmento UDP

comprimento checksum

Comprimento em bytes dosegmento UDP

incluindo cabeccedilalho Por quecirc existe um UDPr elimina estabelecimento de

conexatildeo (que pode causar retardo)

r simples natildeo manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor

r cabeccedilalho de segmento reduzido

r Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)

3 Camada de Transporte 16

Soma de Verificaccedilatildeo (checksum)UDP

Transmissorr trata conteuacutedo do

segmento como sequecircncia de inteiros de 16-bits

r checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento

r transmissor coloca complemento do valor da soma no campo checksumdo UDP

Receptorr calcula checksum do

segmento recebidor verifica se o checksum

calculado bate com o valor recebidom NAtildeO - erro detectadom SIM - nenhum erro

detectado Mas ainda pode ter erros Veja depois hellip

Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido

3 Camada de Transporte 17

Exemplo do Checksum Internetr 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

transbordo

somasoma de

verificaccedilatildeo

3 Camada de Transporte 18

Note que ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 19

Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)r importante nas

camadas de transporte e de enlace

r na lista dos 10 toacutepicos mais importantes em redes

r caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)

3 Camada de Transporte 20

Transferecircncia confiaacutevel o ponto de partida

ladotransmissor

ladoreceptor

rdt_send() chamada de cima (ex pela apl) Passa dados p serem

entregues agrave camada sup do receptor

udt_send() chamada pelo rdt para transferir um pacotes para o receptor sobre um canal natildeo

confiaacutevel

rdt_rcv() chamada quando pacote chega no lado receptor do

canal

deliver_data() chamada pelordt para entregar dados p camada

superior

3 Camada de Transporte 21

Transferecircncia confiaacutevel o ponto de partidaIremosr desenvolver incrementalmente os lados transmissor e receptor

de um protocolo confiaacutevel de transferecircncia de dados (rdt)r considerar apenas fluxo unidirecional de dados

m mas info de controle flui em ambos os sentidosr Usar maacutequinas de estados finitos (FSM) p especificar os

protocolos transmissor e receptor

estado1

estado2

evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado

estado neste ldquoestadordquo o proacuteximo estado eacute

determinado unicamente pelo proacuteximo evento

eventoaccedilotildees

3 Camada de Transporte 22

rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis

r canal de transmissatildeo perfeitamente confiaacutevelm natildeo haacute erros de bitsm natildeo haacute perda de pacotes

r FSMs separadas para transmissor e receptorm transmissor envia dados

pelo canal subjacentem receptor lecirc os dados do

canal subjacente

3 Camada de Transporte 23

rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote

m lembrete checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros

Como as pessoas recuperam ldquoerrosrdquodurante uma conversa

3 Camada de Transporte 24

rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote

m lembre-se checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros

m reconhecimentos (ACKs) receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente

m reconhecimentos negativos (NAKs) receptor avisa explicitamente ao transmissor que o pacote tinha erros

m transmissor reenvia o pacote ao receber um NAKr novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10)

m detecccedilatildeo de errosm Realimentaccedilatildeo (feedback) mensagens de controle (ACKNAK) do

receptor para o transmissor

3 Camada de Transporte 25

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

Animaccedilatildeo no slide

seguinte

rdt20 operaccedilatildeo com ausecircncia de erros

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 27

transmissor

receptor

rdt20 cenaacuterio de erro

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

r Transmissor natildeo sabe o que se passou no receptor

r natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas r transmissor retransmite o

uacuteltimo pacote se ACKNAK chegar com erro

r transmissor inclui nuacutemero de sequecircncia em cada pacote

r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda respostado receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

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

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

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

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeo

Transmissorr no de seq no pacoter bastam dois nos de

seq (01) Por quecircr deve verificar se

ACKNAK recebidos estatildeo corrompidos

r duplicou o no de estadosm estado deve ldquolembrarrdquo

se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptorr deve verificar se o

pacote recebido eacute uma duplicatam estado indica se no de

seq esperado eacute 0 ou 1r nota receptor natildeo tem

como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs

r mesma funcionalidade do rdt21 usando apenas ACKs

r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq

do pacote reconhecidor ACKs duplicados no transmissor resultam

na mesma accedilatildeo do NAK retransmissatildeo do pacote atual

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 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)

aguarda ACK

0fragmento FSMdo transmissor

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

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

r retransmite se nenhum ACK for recebido neste intervalo

r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

m receptor deve especificar no de seq do pacote sendo reconhecido

r requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1

ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30

r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15

ms pacote de 8000 bits

r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

r protocolo limita uso dos recursos fiacutesicos

U sender =

00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 ===RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx ==+

=RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios

pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor

r 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

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

000810008300240

RTT3

tx ==+

acute=

RLRLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se

houver falha de seqr Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletivar O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia acksindividuais para cada pacote

r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador

estourar retransmite apenas o pacote correspondente

3 Camada de Transporte 43

Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)

r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes

pendentes3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simplesr usa apenas ACK sempre envia

ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do

expectedseqnum

r pacotes fora de ordem m descarta (natildeo armazena) -gt

receptor natildeo usa buffersm reconhece pacote com o

nuacutemero de sequecircncia mais alto em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1

receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1

receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva

r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para

posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais

um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK

r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletiva

dados de cimar se proacutex no de seq (n)

disponiacutevel estiver na janela envia o pacote e liga temporizador(n)

estouro do temporizador(n)r reenvia pacote n reinicia

temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como

ldquorecebidordquor se n for menor pacote natildeo

reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

r ACK(n)senatildeor ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 11: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Demultiplexaccedilatildeo Orientada a Conexotildees

r Socket TCP identificado pela quaacutedrupla m endereccedilo IP origemm nuacutemero da porta origemm endereccedilo IP destinom nuacutemero da porta destino

r Demultiplexaccedilatildeo receptor usa todos os quatro valores para direcionar o segmento para o socket apropriado

r Servidor pode dar suporte a muitos sockets TCP simultacircneos m cada socket eacute identificado

pela sua proacutepria quaacutedruplar Servidores Web tecircm sockets

diferentes para cada conexatildeo de clientem HTTP natildeo persistente teraacute

sockets diferentes para cada pedido

3 Camada de Transporte 11

Demultiplexaccedilatildeo Orientada a Conexotildees exemplo

transport

application

physicallink

network

P3transport

application

physicallink

P4

transport

application

physicallink

network

P2

source IPport A9157dest IP port B80

source IPport B80dest IPport A9157

host IP address A

host IP address C

network

P6P5P3

source IPport C5775dest IPport B80

source IPport C9157dest IPport B80

trecircs segmentos todos destinados ao endereccedilo IP Bdest port 80 satildeo demultiplexados para sockets distintos

server IP address B

3 Camada de Transporte 12

Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads

transport

application

physicallink

network

P3transport

application

physicallink

transport

application

physicallink

network

P2

source IPport A9157dest IP port B80

source IPport B80dest IPport A9157

host IP address A

host IP address C

server IP address B

network

P3

source IPport C5775dest IPport B80

source IPport C9157dest IPport B80

P4

Servidor com threads

3 Camada de Transporte 13

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 14

UDP User Datagram Protocol [RFC 768]

r Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo

r Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem serm perdidosm entregues agrave aplicaccedilatildeo fora

de ordemr sem conexatildeo

m natildeo haacute saudaccedilatildeo inicial entre o remetente e o receptor UDP

m tratamento independente para cada segmento UDP

r Uso do UDPm aplicaccedilotildees de streaming

multimiacutedia (tolerante a perdas sensiacutevel a taxas)

m DNSm SNMP

r transferecircncia confiaacutevel sobre UDPm adiciona confiabilidade na

camada de aplicaccedilatildeom recuperaccedilatildeo de erros

especiacutefica da aplicaccedilatildeo

3 Camada de Transporte 15

UDP Cabeccedilalho do segmento

porta origem porta dest

32 bits

Dados de aplicaccedilatildeo

(mensagem)

Formato do segmento UDP

comprimento checksum

Comprimento em bytes dosegmento UDP

incluindo cabeccedilalho Por quecirc existe um UDPr elimina estabelecimento de

conexatildeo (que pode causar retardo)

r simples natildeo manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor

r cabeccedilalho de segmento reduzido

r Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)

3 Camada de Transporte 16

Soma de Verificaccedilatildeo (checksum)UDP

Transmissorr trata conteuacutedo do

segmento como sequecircncia de inteiros de 16-bits

r checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento

r transmissor coloca complemento do valor da soma no campo checksumdo UDP

Receptorr calcula checksum do

segmento recebidor verifica se o checksum

calculado bate com o valor recebidom NAtildeO - erro detectadom SIM - nenhum erro

detectado Mas ainda pode ter erros Veja depois hellip

Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido

3 Camada de Transporte 17

Exemplo do Checksum Internetr 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

transbordo

somasoma de

verificaccedilatildeo

3 Camada de Transporte 18

Note que ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 19

Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)r importante nas

camadas de transporte e de enlace

r na lista dos 10 toacutepicos mais importantes em redes

r caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)

3 Camada de Transporte 20

Transferecircncia confiaacutevel o ponto de partida

ladotransmissor

ladoreceptor

rdt_send() chamada de cima (ex pela apl) Passa dados p serem

entregues agrave camada sup do receptor

udt_send() chamada pelo rdt para transferir um pacotes para o receptor sobre um canal natildeo

confiaacutevel

rdt_rcv() chamada quando pacote chega no lado receptor do

canal

deliver_data() chamada pelordt para entregar dados p camada

superior

3 Camada de Transporte 21

Transferecircncia confiaacutevel o ponto de partidaIremosr desenvolver incrementalmente os lados transmissor e receptor

de um protocolo confiaacutevel de transferecircncia de dados (rdt)r considerar apenas fluxo unidirecional de dados

m mas info de controle flui em ambos os sentidosr Usar maacutequinas de estados finitos (FSM) p especificar os

protocolos transmissor e receptor

estado1

estado2

evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado

estado neste ldquoestadordquo o proacuteximo estado eacute

determinado unicamente pelo proacuteximo evento

eventoaccedilotildees

3 Camada de Transporte 22

rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis

r canal de transmissatildeo perfeitamente confiaacutevelm natildeo haacute erros de bitsm natildeo haacute perda de pacotes

r FSMs separadas para transmissor e receptorm transmissor envia dados

pelo canal subjacentem receptor lecirc os dados do

canal subjacente

3 Camada de Transporte 23

rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote

m lembrete checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros

Como as pessoas recuperam ldquoerrosrdquodurante uma conversa

3 Camada de Transporte 24

rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote

m lembre-se checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros

m reconhecimentos (ACKs) receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente

m reconhecimentos negativos (NAKs) receptor avisa explicitamente ao transmissor que o pacote tinha erros

m transmissor reenvia o pacote ao receber um NAKr novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10)

m detecccedilatildeo de errosm Realimentaccedilatildeo (feedback) mensagens de controle (ACKNAK) do

receptor para o transmissor

3 Camada de Transporte 25

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

Animaccedilatildeo no slide

seguinte

rdt20 operaccedilatildeo com ausecircncia de erros

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 27

transmissor

receptor

rdt20 cenaacuterio de erro

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

r Transmissor natildeo sabe o que se passou no receptor

r natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas r transmissor retransmite o

uacuteltimo pacote se ACKNAK chegar com erro

r transmissor inclui nuacutemero de sequecircncia em cada pacote

r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda respostado receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

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

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

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

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeo

Transmissorr no de seq no pacoter bastam dois nos de

seq (01) Por quecircr deve verificar se

ACKNAK recebidos estatildeo corrompidos

r duplicou o no de estadosm estado deve ldquolembrarrdquo

se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptorr deve verificar se o

pacote recebido eacute uma duplicatam estado indica se no de

seq esperado eacute 0 ou 1r nota receptor natildeo tem

como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs

r mesma funcionalidade do rdt21 usando apenas ACKs

r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq

do pacote reconhecidor ACKs duplicados no transmissor resultam

na mesma accedilatildeo do NAK retransmissatildeo do pacote atual

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 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)

aguarda ACK

0fragmento FSMdo transmissor

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

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

r retransmite se nenhum ACK for recebido neste intervalo

r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

m receptor deve especificar no de seq do pacote sendo reconhecido

r requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1

ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30

r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15

ms pacote de 8000 bits

r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

r protocolo limita uso dos recursos fiacutesicos

U sender =

00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 ===RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx ==+

=RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios

pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor

r 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

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

000810008300240

RTT3

tx ==+

acute=

RLRLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se

houver falha de seqr Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletivar O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia acksindividuais para cada pacote

r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador

estourar retransmite apenas o pacote correspondente

3 Camada de Transporte 43

Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)

r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes

pendentes3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simplesr usa apenas ACK sempre envia

ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do

expectedseqnum

r pacotes fora de ordem m descarta (natildeo armazena) -gt

receptor natildeo usa buffersm reconhece pacote com o

nuacutemero de sequecircncia mais alto em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1

receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1

receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva

r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para

posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais

um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK

r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletiva

dados de cimar se proacutex no de seq (n)

disponiacutevel estiver na janela envia o pacote e liga temporizador(n)

estouro do temporizador(n)r reenvia pacote n reinicia

temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como

ldquorecebidordquor se n for menor pacote natildeo

reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

r ACK(n)senatildeor ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 12: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Demultiplexaccedilatildeo Orientada a Conexotildees exemplo

transport

application

physicallink

network

P3transport

application

physicallink

P4

transport

application

physicallink

network

P2

source IPport A9157dest IP port B80

source IPport B80dest IPport A9157

host IP address A

host IP address C

network

P6P5P3

source IPport C5775dest IPport B80

source IPport C9157dest IPport B80

trecircs segmentos todos destinados ao endereccedilo IP Bdest port 80 satildeo demultiplexados para sockets distintos

server IP address B

3 Camada de Transporte 12

Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads

transport

application

physicallink

network

P3transport

application

physicallink

transport

application

physicallink

network

P2

source IPport A9157dest IP port B80

source IPport B80dest IPport A9157

host IP address A

host IP address C

server IP address B

network

P3

source IPport C5775dest IPport B80

source IPport C9157dest IPport B80

P4

Servidor com threads

3 Camada de Transporte 13

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 14

UDP User Datagram Protocol [RFC 768]

r Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo

r Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem serm perdidosm entregues agrave aplicaccedilatildeo fora

de ordemr sem conexatildeo

m natildeo haacute saudaccedilatildeo inicial entre o remetente e o receptor UDP

m tratamento independente para cada segmento UDP

r Uso do UDPm aplicaccedilotildees de streaming

multimiacutedia (tolerante a perdas sensiacutevel a taxas)

m DNSm SNMP

r transferecircncia confiaacutevel sobre UDPm adiciona confiabilidade na

camada de aplicaccedilatildeom recuperaccedilatildeo de erros

especiacutefica da aplicaccedilatildeo

3 Camada de Transporte 15

UDP Cabeccedilalho do segmento

porta origem porta dest

32 bits

Dados de aplicaccedilatildeo

(mensagem)

Formato do segmento UDP

comprimento checksum

Comprimento em bytes dosegmento UDP

incluindo cabeccedilalho Por quecirc existe um UDPr elimina estabelecimento de

conexatildeo (que pode causar retardo)

r simples natildeo manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor

r cabeccedilalho de segmento reduzido

r Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)

3 Camada de Transporte 16

Soma de Verificaccedilatildeo (checksum)UDP

Transmissorr trata conteuacutedo do

segmento como sequecircncia de inteiros de 16-bits

r checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento

r transmissor coloca complemento do valor da soma no campo checksumdo UDP

Receptorr calcula checksum do

segmento recebidor verifica se o checksum

calculado bate com o valor recebidom NAtildeO - erro detectadom SIM - nenhum erro

detectado Mas ainda pode ter erros Veja depois hellip

Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido

3 Camada de Transporte 17

Exemplo do Checksum Internetr 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

transbordo

somasoma de

verificaccedilatildeo

3 Camada de Transporte 18

Note que ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 19

Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)r importante nas

camadas de transporte e de enlace

r na lista dos 10 toacutepicos mais importantes em redes

r caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)

3 Camada de Transporte 20

Transferecircncia confiaacutevel o ponto de partida

ladotransmissor

ladoreceptor

rdt_send() chamada de cima (ex pela apl) Passa dados p serem

entregues agrave camada sup do receptor

udt_send() chamada pelo rdt para transferir um pacotes para o receptor sobre um canal natildeo

confiaacutevel

rdt_rcv() chamada quando pacote chega no lado receptor do

canal

deliver_data() chamada pelordt para entregar dados p camada

superior

3 Camada de Transporte 21

Transferecircncia confiaacutevel o ponto de partidaIremosr desenvolver incrementalmente os lados transmissor e receptor

de um protocolo confiaacutevel de transferecircncia de dados (rdt)r considerar apenas fluxo unidirecional de dados

m mas info de controle flui em ambos os sentidosr Usar maacutequinas de estados finitos (FSM) p especificar os

protocolos transmissor e receptor

estado1

estado2

evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado

estado neste ldquoestadordquo o proacuteximo estado eacute

determinado unicamente pelo proacuteximo evento

eventoaccedilotildees

3 Camada de Transporte 22

rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis

r canal de transmissatildeo perfeitamente confiaacutevelm natildeo haacute erros de bitsm natildeo haacute perda de pacotes

r FSMs separadas para transmissor e receptorm transmissor envia dados

pelo canal subjacentem receptor lecirc os dados do

canal subjacente

3 Camada de Transporte 23

rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote

m lembrete checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros

Como as pessoas recuperam ldquoerrosrdquodurante uma conversa

3 Camada de Transporte 24

rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote

m lembre-se checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros

m reconhecimentos (ACKs) receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente

m reconhecimentos negativos (NAKs) receptor avisa explicitamente ao transmissor que o pacote tinha erros

m transmissor reenvia o pacote ao receber um NAKr novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10)

m detecccedilatildeo de errosm Realimentaccedilatildeo (feedback) mensagens de controle (ACKNAK) do

receptor para o transmissor

3 Camada de Transporte 25

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

Animaccedilatildeo no slide

seguinte

rdt20 operaccedilatildeo com ausecircncia de erros

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 27

transmissor

receptor

rdt20 cenaacuterio de erro

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

r Transmissor natildeo sabe o que se passou no receptor

r natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas r transmissor retransmite o

uacuteltimo pacote se ACKNAK chegar com erro

r transmissor inclui nuacutemero de sequecircncia em cada pacote

r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda respostado receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

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

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

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

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeo

Transmissorr no de seq no pacoter bastam dois nos de

seq (01) Por quecircr deve verificar se

ACKNAK recebidos estatildeo corrompidos

r duplicou o no de estadosm estado deve ldquolembrarrdquo

se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptorr deve verificar se o

pacote recebido eacute uma duplicatam estado indica se no de

seq esperado eacute 0 ou 1r nota receptor natildeo tem

como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs

r mesma funcionalidade do rdt21 usando apenas ACKs

r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq

do pacote reconhecidor ACKs duplicados no transmissor resultam

na mesma accedilatildeo do NAK retransmissatildeo do pacote atual

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 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)

aguarda ACK

0fragmento FSMdo transmissor

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

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

r retransmite se nenhum ACK for recebido neste intervalo

r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

m receptor deve especificar no de seq do pacote sendo reconhecido

r requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1

ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30

r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15

ms pacote de 8000 bits

r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

r protocolo limita uso dos recursos fiacutesicos

U sender =

00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 ===RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx ==+

=RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios

pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor

r 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

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

000810008300240

RTT3

tx ==+

acute=

RLRLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se

houver falha de seqr Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletivar O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia acksindividuais para cada pacote

r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador

estourar retransmite apenas o pacote correspondente

3 Camada de Transporte 43

Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)

r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes

pendentes3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simplesr usa apenas ACK sempre envia

ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do

expectedseqnum

r pacotes fora de ordem m descarta (natildeo armazena) -gt

receptor natildeo usa buffersm reconhece pacote com o

nuacutemero de sequecircncia mais alto em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1

receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1

receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva

r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para

posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais

um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK

r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletiva

dados de cimar se proacutex no de seq (n)

disponiacutevel estiver na janela envia o pacote e liga temporizador(n)

estouro do temporizador(n)r reenvia pacote n reinicia

temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como

ldquorecebidordquor se n for menor pacote natildeo

reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

r ACK(n)senatildeor ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 13: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads

transport

application

physicallink

network

P3transport

application

physicallink

transport

application

physicallink

network

P2

source IPport A9157dest IP port B80

source IPport B80dest IPport A9157

host IP address A

host IP address C

server IP address B

network

P3

source IPport C5775dest IPport B80

source IPport C9157dest IPport B80

P4

Servidor com threads

3 Camada de Transporte 13

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 14

UDP User Datagram Protocol [RFC 768]

r Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo

r Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem serm perdidosm entregues agrave aplicaccedilatildeo fora

de ordemr sem conexatildeo

m natildeo haacute saudaccedilatildeo inicial entre o remetente e o receptor UDP

m tratamento independente para cada segmento UDP

r Uso do UDPm aplicaccedilotildees de streaming

multimiacutedia (tolerante a perdas sensiacutevel a taxas)

m DNSm SNMP

r transferecircncia confiaacutevel sobre UDPm adiciona confiabilidade na

camada de aplicaccedilatildeom recuperaccedilatildeo de erros

especiacutefica da aplicaccedilatildeo

3 Camada de Transporte 15

UDP Cabeccedilalho do segmento

porta origem porta dest

32 bits

Dados de aplicaccedilatildeo

(mensagem)

Formato do segmento UDP

comprimento checksum

Comprimento em bytes dosegmento UDP

incluindo cabeccedilalho Por quecirc existe um UDPr elimina estabelecimento de

conexatildeo (que pode causar retardo)

r simples natildeo manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor

r cabeccedilalho de segmento reduzido

r Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)

3 Camada de Transporte 16

Soma de Verificaccedilatildeo (checksum)UDP

Transmissorr trata conteuacutedo do

segmento como sequecircncia de inteiros de 16-bits

r checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento

r transmissor coloca complemento do valor da soma no campo checksumdo UDP

Receptorr calcula checksum do

segmento recebidor verifica se o checksum

calculado bate com o valor recebidom NAtildeO - erro detectadom SIM - nenhum erro

detectado Mas ainda pode ter erros Veja depois hellip

Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido

3 Camada de Transporte 17

Exemplo do Checksum Internetr 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

transbordo

somasoma de

verificaccedilatildeo

3 Camada de Transporte 18

Note que ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 19

Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)r importante nas

camadas de transporte e de enlace

r na lista dos 10 toacutepicos mais importantes em redes

r caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)

3 Camada de Transporte 20

Transferecircncia confiaacutevel o ponto de partida

ladotransmissor

ladoreceptor

rdt_send() chamada de cima (ex pela apl) Passa dados p serem

entregues agrave camada sup do receptor

udt_send() chamada pelo rdt para transferir um pacotes para o receptor sobre um canal natildeo

confiaacutevel

rdt_rcv() chamada quando pacote chega no lado receptor do

canal

deliver_data() chamada pelordt para entregar dados p camada

superior

3 Camada de Transporte 21

Transferecircncia confiaacutevel o ponto de partidaIremosr desenvolver incrementalmente os lados transmissor e receptor

de um protocolo confiaacutevel de transferecircncia de dados (rdt)r considerar apenas fluxo unidirecional de dados

m mas info de controle flui em ambos os sentidosr Usar maacutequinas de estados finitos (FSM) p especificar os

protocolos transmissor e receptor

estado1

estado2

evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado

estado neste ldquoestadordquo o proacuteximo estado eacute

determinado unicamente pelo proacuteximo evento

eventoaccedilotildees

3 Camada de Transporte 22

rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis

r canal de transmissatildeo perfeitamente confiaacutevelm natildeo haacute erros de bitsm natildeo haacute perda de pacotes

r FSMs separadas para transmissor e receptorm transmissor envia dados

pelo canal subjacentem receptor lecirc os dados do

canal subjacente

3 Camada de Transporte 23

rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote

m lembrete checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros

Como as pessoas recuperam ldquoerrosrdquodurante uma conversa

3 Camada de Transporte 24

rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote

m lembre-se checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros

m reconhecimentos (ACKs) receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente

m reconhecimentos negativos (NAKs) receptor avisa explicitamente ao transmissor que o pacote tinha erros

m transmissor reenvia o pacote ao receber um NAKr novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10)

m detecccedilatildeo de errosm Realimentaccedilatildeo (feedback) mensagens de controle (ACKNAK) do

receptor para o transmissor

3 Camada de Transporte 25

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

Animaccedilatildeo no slide

seguinte

rdt20 operaccedilatildeo com ausecircncia de erros

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 27

transmissor

receptor

rdt20 cenaacuterio de erro

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

r Transmissor natildeo sabe o que se passou no receptor

r natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas r transmissor retransmite o

uacuteltimo pacote se ACKNAK chegar com erro

r transmissor inclui nuacutemero de sequecircncia em cada pacote

r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda respostado receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

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

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

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

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeo

Transmissorr no de seq no pacoter bastam dois nos de

seq (01) Por quecircr deve verificar se

ACKNAK recebidos estatildeo corrompidos

r duplicou o no de estadosm estado deve ldquolembrarrdquo

se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptorr deve verificar se o

pacote recebido eacute uma duplicatam estado indica se no de

seq esperado eacute 0 ou 1r nota receptor natildeo tem

como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs

r mesma funcionalidade do rdt21 usando apenas ACKs

r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq

do pacote reconhecidor ACKs duplicados no transmissor resultam

na mesma accedilatildeo do NAK retransmissatildeo do pacote atual

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 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)

aguarda ACK

0fragmento FSMdo transmissor

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

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

r retransmite se nenhum ACK for recebido neste intervalo

r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

m receptor deve especificar no de seq do pacote sendo reconhecido

r requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1

ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30

r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15

ms pacote de 8000 bits

r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

r protocolo limita uso dos recursos fiacutesicos

U sender =

00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 ===RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx ==+

=RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios

pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor

r 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

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

000810008300240

RTT3

tx ==+

acute=

RLRLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se

houver falha de seqr Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletivar O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia acksindividuais para cada pacote

r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador

estourar retransmite apenas o pacote correspondente

3 Camada de Transporte 43

Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)

r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes

pendentes3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simplesr usa apenas ACK sempre envia

ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do

expectedseqnum

r pacotes fora de ordem m descarta (natildeo armazena) -gt

receptor natildeo usa buffersm reconhece pacote com o

nuacutemero de sequecircncia mais alto em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1

receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1

receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva

r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para

posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais

um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK

r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletiva

dados de cimar se proacutex no de seq (n)

disponiacutevel estiver na janela envia o pacote e liga temporizador(n)

estouro do temporizador(n)r reenvia pacote n reinicia

temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como

ldquorecebidordquor se n for menor pacote natildeo

reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

r ACK(n)senatildeor ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 14: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 14

UDP User Datagram Protocol [RFC 768]

r Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo

r Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem serm perdidosm entregues agrave aplicaccedilatildeo fora

de ordemr sem conexatildeo

m natildeo haacute saudaccedilatildeo inicial entre o remetente e o receptor UDP

m tratamento independente para cada segmento UDP

r Uso do UDPm aplicaccedilotildees de streaming

multimiacutedia (tolerante a perdas sensiacutevel a taxas)

m DNSm SNMP

r transferecircncia confiaacutevel sobre UDPm adiciona confiabilidade na

camada de aplicaccedilatildeom recuperaccedilatildeo de erros

especiacutefica da aplicaccedilatildeo

3 Camada de Transporte 15

UDP Cabeccedilalho do segmento

porta origem porta dest

32 bits

Dados de aplicaccedilatildeo

(mensagem)

Formato do segmento UDP

comprimento checksum

Comprimento em bytes dosegmento UDP

incluindo cabeccedilalho Por quecirc existe um UDPr elimina estabelecimento de

conexatildeo (que pode causar retardo)

r simples natildeo manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor

r cabeccedilalho de segmento reduzido

r Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)

3 Camada de Transporte 16

Soma de Verificaccedilatildeo (checksum)UDP

Transmissorr trata conteuacutedo do

segmento como sequecircncia de inteiros de 16-bits

r checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento

r transmissor coloca complemento do valor da soma no campo checksumdo UDP

Receptorr calcula checksum do

segmento recebidor verifica se o checksum

calculado bate com o valor recebidom NAtildeO - erro detectadom SIM - nenhum erro

detectado Mas ainda pode ter erros Veja depois hellip

Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido

3 Camada de Transporte 17

Exemplo do Checksum Internetr 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

transbordo

somasoma de

verificaccedilatildeo

3 Camada de Transporte 18

Note que ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 19

Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)r importante nas

camadas de transporte e de enlace

r na lista dos 10 toacutepicos mais importantes em redes

r caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)

3 Camada de Transporte 20

Transferecircncia confiaacutevel o ponto de partida

ladotransmissor

ladoreceptor

rdt_send() chamada de cima (ex pela apl) Passa dados p serem

entregues agrave camada sup do receptor

udt_send() chamada pelo rdt para transferir um pacotes para o receptor sobre um canal natildeo

confiaacutevel

rdt_rcv() chamada quando pacote chega no lado receptor do

canal

deliver_data() chamada pelordt para entregar dados p camada

superior

3 Camada de Transporte 21

Transferecircncia confiaacutevel o ponto de partidaIremosr desenvolver incrementalmente os lados transmissor e receptor

de um protocolo confiaacutevel de transferecircncia de dados (rdt)r considerar apenas fluxo unidirecional de dados

m mas info de controle flui em ambos os sentidosr Usar maacutequinas de estados finitos (FSM) p especificar os

protocolos transmissor e receptor

estado1

estado2

evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado

estado neste ldquoestadordquo o proacuteximo estado eacute

determinado unicamente pelo proacuteximo evento

eventoaccedilotildees

3 Camada de Transporte 22

rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis

r canal de transmissatildeo perfeitamente confiaacutevelm natildeo haacute erros de bitsm natildeo haacute perda de pacotes

r FSMs separadas para transmissor e receptorm transmissor envia dados

pelo canal subjacentem receptor lecirc os dados do

canal subjacente

3 Camada de Transporte 23

rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote

m lembrete checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros

Como as pessoas recuperam ldquoerrosrdquodurante uma conversa

3 Camada de Transporte 24

rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote

m lembre-se checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros

m reconhecimentos (ACKs) receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente

m reconhecimentos negativos (NAKs) receptor avisa explicitamente ao transmissor que o pacote tinha erros

m transmissor reenvia o pacote ao receber um NAKr novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10)

m detecccedilatildeo de errosm Realimentaccedilatildeo (feedback) mensagens de controle (ACKNAK) do

receptor para o transmissor

3 Camada de Transporte 25

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

Animaccedilatildeo no slide

seguinte

rdt20 operaccedilatildeo com ausecircncia de erros

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 27

transmissor

receptor

rdt20 cenaacuterio de erro

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

r Transmissor natildeo sabe o que se passou no receptor

r natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas r transmissor retransmite o

uacuteltimo pacote se ACKNAK chegar com erro

r transmissor inclui nuacutemero de sequecircncia em cada pacote

r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda respostado receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

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

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

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

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeo

Transmissorr no de seq no pacoter bastam dois nos de

seq (01) Por quecircr deve verificar se

ACKNAK recebidos estatildeo corrompidos

r duplicou o no de estadosm estado deve ldquolembrarrdquo

se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptorr deve verificar se o

pacote recebido eacute uma duplicatam estado indica se no de

seq esperado eacute 0 ou 1r nota receptor natildeo tem

como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs

r mesma funcionalidade do rdt21 usando apenas ACKs

r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq

do pacote reconhecidor ACKs duplicados no transmissor resultam

na mesma accedilatildeo do NAK retransmissatildeo do pacote atual

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 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)

aguarda ACK

0fragmento FSMdo transmissor

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

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

r retransmite se nenhum ACK for recebido neste intervalo

r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

m receptor deve especificar no de seq do pacote sendo reconhecido

r requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1

ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30

r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15

ms pacote de 8000 bits

r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

r protocolo limita uso dos recursos fiacutesicos

U sender =

00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 ===RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx ==+

=RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios

pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor

r 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

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

000810008300240

RTT3

tx ==+

acute=

RLRLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se

houver falha de seqr Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletivar O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia acksindividuais para cada pacote

r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador

estourar retransmite apenas o pacote correspondente

3 Camada de Transporte 43

Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)

r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes

pendentes3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simplesr usa apenas ACK sempre envia

ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do

expectedseqnum

r pacotes fora de ordem m descarta (natildeo armazena) -gt

receptor natildeo usa buffersm reconhece pacote com o

nuacutemero de sequecircncia mais alto em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1

receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1

receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva

r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para

posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais

um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK

r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletiva

dados de cimar se proacutex no de seq (n)

disponiacutevel estiver na janela envia o pacote e liga temporizador(n)

estouro do temporizador(n)r reenvia pacote n reinicia

temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como

ldquorecebidordquor se n for menor pacote natildeo

reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

r ACK(n)senatildeor ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 15: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

UDP User Datagram Protocol [RFC 768]

r Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo

r Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem serm perdidosm entregues agrave aplicaccedilatildeo fora

de ordemr sem conexatildeo

m natildeo haacute saudaccedilatildeo inicial entre o remetente e o receptor UDP

m tratamento independente para cada segmento UDP

r Uso do UDPm aplicaccedilotildees de streaming

multimiacutedia (tolerante a perdas sensiacutevel a taxas)

m DNSm SNMP

r transferecircncia confiaacutevel sobre UDPm adiciona confiabilidade na

camada de aplicaccedilatildeom recuperaccedilatildeo de erros

especiacutefica da aplicaccedilatildeo

3 Camada de Transporte 15

UDP Cabeccedilalho do segmento

porta origem porta dest

32 bits

Dados de aplicaccedilatildeo

(mensagem)

Formato do segmento UDP

comprimento checksum

Comprimento em bytes dosegmento UDP

incluindo cabeccedilalho Por quecirc existe um UDPr elimina estabelecimento de

conexatildeo (que pode causar retardo)

r simples natildeo manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor

r cabeccedilalho de segmento reduzido

r Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)

3 Camada de Transporte 16

Soma de Verificaccedilatildeo (checksum)UDP

Transmissorr trata conteuacutedo do

segmento como sequecircncia de inteiros de 16-bits

r checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento

r transmissor coloca complemento do valor da soma no campo checksumdo UDP

Receptorr calcula checksum do

segmento recebidor verifica se o checksum

calculado bate com o valor recebidom NAtildeO - erro detectadom SIM - nenhum erro

detectado Mas ainda pode ter erros Veja depois hellip

Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido

3 Camada de Transporte 17

Exemplo do Checksum Internetr 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

transbordo

somasoma de

verificaccedilatildeo

3 Camada de Transporte 18

Note que ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 19

Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)r importante nas

camadas de transporte e de enlace

r na lista dos 10 toacutepicos mais importantes em redes

r caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)

3 Camada de Transporte 20

Transferecircncia confiaacutevel o ponto de partida

ladotransmissor

ladoreceptor

rdt_send() chamada de cima (ex pela apl) Passa dados p serem

entregues agrave camada sup do receptor

udt_send() chamada pelo rdt para transferir um pacotes para o receptor sobre um canal natildeo

confiaacutevel

rdt_rcv() chamada quando pacote chega no lado receptor do

canal

deliver_data() chamada pelordt para entregar dados p camada

superior

3 Camada de Transporte 21

Transferecircncia confiaacutevel o ponto de partidaIremosr desenvolver incrementalmente os lados transmissor e receptor

de um protocolo confiaacutevel de transferecircncia de dados (rdt)r considerar apenas fluxo unidirecional de dados

m mas info de controle flui em ambos os sentidosr Usar maacutequinas de estados finitos (FSM) p especificar os

protocolos transmissor e receptor

estado1

estado2

evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado

estado neste ldquoestadordquo o proacuteximo estado eacute

determinado unicamente pelo proacuteximo evento

eventoaccedilotildees

3 Camada de Transporte 22

rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis

r canal de transmissatildeo perfeitamente confiaacutevelm natildeo haacute erros de bitsm natildeo haacute perda de pacotes

r FSMs separadas para transmissor e receptorm transmissor envia dados

pelo canal subjacentem receptor lecirc os dados do

canal subjacente

3 Camada de Transporte 23

rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote

m lembrete checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros

Como as pessoas recuperam ldquoerrosrdquodurante uma conversa

3 Camada de Transporte 24

rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote

m lembre-se checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros

m reconhecimentos (ACKs) receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente

m reconhecimentos negativos (NAKs) receptor avisa explicitamente ao transmissor que o pacote tinha erros

m transmissor reenvia o pacote ao receber um NAKr novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10)

m detecccedilatildeo de errosm Realimentaccedilatildeo (feedback) mensagens de controle (ACKNAK) do

receptor para o transmissor

3 Camada de Transporte 25

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

Animaccedilatildeo no slide

seguinte

rdt20 operaccedilatildeo com ausecircncia de erros

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 27

transmissor

receptor

rdt20 cenaacuterio de erro

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

r Transmissor natildeo sabe o que se passou no receptor

r natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas r transmissor retransmite o

uacuteltimo pacote se ACKNAK chegar com erro

r transmissor inclui nuacutemero de sequecircncia em cada pacote

r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda respostado receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

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

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

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

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeo

Transmissorr no de seq no pacoter bastam dois nos de

seq (01) Por quecircr deve verificar se

ACKNAK recebidos estatildeo corrompidos

r duplicou o no de estadosm estado deve ldquolembrarrdquo

se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptorr deve verificar se o

pacote recebido eacute uma duplicatam estado indica se no de

seq esperado eacute 0 ou 1r nota receptor natildeo tem

como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs

r mesma funcionalidade do rdt21 usando apenas ACKs

r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq

do pacote reconhecidor ACKs duplicados no transmissor resultam

na mesma accedilatildeo do NAK retransmissatildeo do pacote atual

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 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)

aguarda ACK

0fragmento FSMdo transmissor

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

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

r retransmite se nenhum ACK for recebido neste intervalo

r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

m receptor deve especificar no de seq do pacote sendo reconhecido

r requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1

ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30

r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15

ms pacote de 8000 bits

r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

r protocolo limita uso dos recursos fiacutesicos

U sender =

00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 ===RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx ==+

=RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios

pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor

r 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

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

000810008300240

RTT3

tx ==+

acute=

RLRLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se

houver falha de seqr Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletivar O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia acksindividuais para cada pacote

r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador

estourar retransmite apenas o pacote correspondente

3 Camada de Transporte 43

Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)

r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes

pendentes3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simplesr usa apenas ACK sempre envia

ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do

expectedseqnum

r pacotes fora de ordem m descarta (natildeo armazena) -gt

receptor natildeo usa buffersm reconhece pacote com o

nuacutemero de sequecircncia mais alto em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1

receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1

receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva

r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para

posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais

um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK

r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletiva

dados de cimar se proacutex no de seq (n)

disponiacutevel estiver na janela envia o pacote e liga temporizador(n)

estouro do temporizador(n)r reenvia pacote n reinicia

temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como

ldquorecebidordquor se n for menor pacote natildeo

reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

r ACK(n)senatildeor ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 16: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

UDP Cabeccedilalho do segmento

porta origem porta dest

32 bits

Dados de aplicaccedilatildeo

(mensagem)

Formato do segmento UDP

comprimento checksum

Comprimento em bytes dosegmento UDP

incluindo cabeccedilalho Por quecirc existe um UDPr elimina estabelecimento de

conexatildeo (que pode causar retardo)

r simples natildeo manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor

r cabeccedilalho de segmento reduzido

r Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)

3 Camada de Transporte 16

Soma de Verificaccedilatildeo (checksum)UDP

Transmissorr trata conteuacutedo do

segmento como sequecircncia de inteiros de 16-bits

r checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento

r transmissor coloca complemento do valor da soma no campo checksumdo UDP

Receptorr calcula checksum do

segmento recebidor verifica se o checksum

calculado bate com o valor recebidom NAtildeO - erro detectadom SIM - nenhum erro

detectado Mas ainda pode ter erros Veja depois hellip

Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido

3 Camada de Transporte 17

Exemplo do Checksum Internetr 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

transbordo

somasoma de

verificaccedilatildeo

3 Camada de Transporte 18

Note que ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 19

Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)r importante nas

camadas de transporte e de enlace

r na lista dos 10 toacutepicos mais importantes em redes

r caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)

3 Camada de Transporte 20

Transferecircncia confiaacutevel o ponto de partida

ladotransmissor

ladoreceptor

rdt_send() chamada de cima (ex pela apl) Passa dados p serem

entregues agrave camada sup do receptor

udt_send() chamada pelo rdt para transferir um pacotes para o receptor sobre um canal natildeo

confiaacutevel

rdt_rcv() chamada quando pacote chega no lado receptor do

canal

deliver_data() chamada pelordt para entregar dados p camada

superior

3 Camada de Transporte 21

Transferecircncia confiaacutevel o ponto de partidaIremosr desenvolver incrementalmente os lados transmissor e receptor

de um protocolo confiaacutevel de transferecircncia de dados (rdt)r considerar apenas fluxo unidirecional de dados

m mas info de controle flui em ambos os sentidosr Usar maacutequinas de estados finitos (FSM) p especificar os

protocolos transmissor e receptor

estado1

estado2

evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado

estado neste ldquoestadordquo o proacuteximo estado eacute

determinado unicamente pelo proacuteximo evento

eventoaccedilotildees

3 Camada de Transporte 22

rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis

r canal de transmissatildeo perfeitamente confiaacutevelm natildeo haacute erros de bitsm natildeo haacute perda de pacotes

r FSMs separadas para transmissor e receptorm transmissor envia dados

pelo canal subjacentem receptor lecirc os dados do

canal subjacente

3 Camada de Transporte 23

rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote

m lembrete checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros

Como as pessoas recuperam ldquoerrosrdquodurante uma conversa

3 Camada de Transporte 24

rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote

m lembre-se checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros

m reconhecimentos (ACKs) receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente

m reconhecimentos negativos (NAKs) receptor avisa explicitamente ao transmissor que o pacote tinha erros

m transmissor reenvia o pacote ao receber um NAKr novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10)

m detecccedilatildeo de errosm Realimentaccedilatildeo (feedback) mensagens de controle (ACKNAK) do

receptor para o transmissor

3 Camada de Transporte 25

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

Animaccedilatildeo no slide

seguinte

rdt20 operaccedilatildeo com ausecircncia de erros

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 27

transmissor

receptor

rdt20 cenaacuterio de erro

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

r Transmissor natildeo sabe o que se passou no receptor

r natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas r transmissor retransmite o

uacuteltimo pacote se ACKNAK chegar com erro

r transmissor inclui nuacutemero de sequecircncia em cada pacote

r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda respostado receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

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

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

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

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeo

Transmissorr no de seq no pacoter bastam dois nos de

seq (01) Por quecircr deve verificar se

ACKNAK recebidos estatildeo corrompidos

r duplicou o no de estadosm estado deve ldquolembrarrdquo

se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptorr deve verificar se o

pacote recebido eacute uma duplicatam estado indica se no de

seq esperado eacute 0 ou 1r nota receptor natildeo tem

como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs

r mesma funcionalidade do rdt21 usando apenas ACKs

r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq

do pacote reconhecidor ACKs duplicados no transmissor resultam

na mesma accedilatildeo do NAK retransmissatildeo do pacote atual

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 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)

aguarda ACK

0fragmento FSMdo transmissor

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

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

r retransmite se nenhum ACK for recebido neste intervalo

r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

m receptor deve especificar no de seq do pacote sendo reconhecido

r requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1

ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30

r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15

ms pacote de 8000 bits

r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

r protocolo limita uso dos recursos fiacutesicos

U sender =

00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 ===RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx ==+

=RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios

pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor

r 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

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

000810008300240

RTT3

tx ==+

acute=

RLRLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se

houver falha de seqr Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletivar O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia acksindividuais para cada pacote

r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador

estourar retransmite apenas o pacote correspondente

3 Camada de Transporte 43

Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)

r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes

pendentes3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simplesr usa apenas ACK sempre envia

ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do

expectedseqnum

r pacotes fora de ordem m descarta (natildeo armazena) -gt

receptor natildeo usa buffersm reconhece pacote com o

nuacutemero de sequecircncia mais alto em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1

receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1

receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva

r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para

posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais

um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK

r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletiva

dados de cimar se proacutex no de seq (n)

disponiacutevel estiver na janela envia o pacote e liga temporizador(n)

estouro do temporizador(n)r reenvia pacote n reinicia

temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como

ldquorecebidordquor se n for menor pacote natildeo

reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

r ACK(n)senatildeor ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 17: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Soma de Verificaccedilatildeo (checksum)UDP

Transmissorr trata conteuacutedo do

segmento como sequecircncia de inteiros de 16-bits

r checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento

r transmissor coloca complemento do valor da soma no campo checksumdo UDP

Receptorr calcula checksum do

segmento recebidor verifica se o checksum

calculado bate com o valor recebidom NAtildeO - erro detectadom SIM - nenhum erro

detectado Mas ainda pode ter erros Veja depois hellip

Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido

3 Camada de Transporte 17

Exemplo do Checksum Internetr 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

transbordo

somasoma de

verificaccedilatildeo

3 Camada de Transporte 18

Note que ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 19

Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)r importante nas

camadas de transporte e de enlace

r na lista dos 10 toacutepicos mais importantes em redes

r caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)

3 Camada de Transporte 20

Transferecircncia confiaacutevel o ponto de partida

ladotransmissor

ladoreceptor

rdt_send() chamada de cima (ex pela apl) Passa dados p serem

entregues agrave camada sup do receptor

udt_send() chamada pelo rdt para transferir um pacotes para o receptor sobre um canal natildeo

confiaacutevel

rdt_rcv() chamada quando pacote chega no lado receptor do

canal

deliver_data() chamada pelordt para entregar dados p camada

superior

3 Camada de Transporte 21

Transferecircncia confiaacutevel o ponto de partidaIremosr desenvolver incrementalmente os lados transmissor e receptor

de um protocolo confiaacutevel de transferecircncia de dados (rdt)r considerar apenas fluxo unidirecional de dados

m mas info de controle flui em ambos os sentidosr Usar maacutequinas de estados finitos (FSM) p especificar os

protocolos transmissor e receptor

estado1

estado2

evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado

estado neste ldquoestadordquo o proacuteximo estado eacute

determinado unicamente pelo proacuteximo evento

eventoaccedilotildees

3 Camada de Transporte 22

rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis

r canal de transmissatildeo perfeitamente confiaacutevelm natildeo haacute erros de bitsm natildeo haacute perda de pacotes

r FSMs separadas para transmissor e receptorm transmissor envia dados

pelo canal subjacentem receptor lecirc os dados do

canal subjacente

3 Camada de Transporte 23

rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote

m lembrete checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros

Como as pessoas recuperam ldquoerrosrdquodurante uma conversa

3 Camada de Transporte 24

rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote

m lembre-se checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros

m reconhecimentos (ACKs) receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente

m reconhecimentos negativos (NAKs) receptor avisa explicitamente ao transmissor que o pacote tinha erros

m transmissor reenvia o pacote ao receber um NAKr novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10)

m detecccedilatildeo de errosm Realimentaccedilatildeo (feedback) mensagens de controle (ACKNAK) do

receptor para o transmissor

3 Camada de Transporte 25

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

Animaccedilatildeo no slide

seguinte

rdt20 operaccedilatildeo com ausecircncia de erros

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 27

transmissor

receptor

rdt20 cenaacuterio de erro

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

r Transmissor natildeo sabe o que se passou no receptor

r natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas r transmissor retransmite o

uacuteltimo pacote se ACKNAK chegar com erro

r transmissor inclui nuacutemero de sequecircncia em cada pacote

r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda respostado receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

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

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

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

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeo

Transmissorr no de seq no pacoter bastam dois nos de

seq (01) Por quecircr deve verificar se

ACKNAK recebidos estatildeo corrompidos

r duplicou o no de estadosm estado deve ldquolembrarrdquo

se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptorr deve verificar se o

pacote recebido eacute uma duplicatam estado indica se no de

seq esperado eacute 0 ou 1r nota receptor natildeo tem

como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs

r mesma funcionalidade do rdt21 usando apenas ACKs

r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq

do pacote reconhecidor ACKs duplicados no transmissor resultam

na mesma accedilatildeo do NAK retransmissatildeo do pacote atual

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 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)

aguarda ACK

0fragmento FSMdo transmissor

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

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

r retransmite se nenhum ACK for recebido neste intervalo

r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

m receptor deve especificar no de seq do pacote sendo reconhecido

r requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1

ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30

r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15

ms pacote de 8000 bits

r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

r protocolo limita uso dos recursos fiacutesicos

U sender =

00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 ===RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx ==+

=RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios

pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor

r 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

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

000810008300240

RTT3

tx ==+

acute=

RLRLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se

houver falha de seqr Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletivar O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia acksindividuais para cada pacote

r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador

estourar retransmite apenas o pacote correspondente

3 Camada de Transporte 43

Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)

r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes

pendentes3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simplesr usa apenas ACK sempre envia

ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do

expectedseqnum

r pacotes fora de ordem m descarta (natildeo armazena) -gt

receptor natildeo usa buffersm reconhece pacote com o

nuacutemero de sequecircncia mais alto em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1

receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1

receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva

r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para

posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais

um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK

r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletiva

dados de cimar se proacutex no de seq (n)

disponiacutevel estiver na janela envia o pacote e liga temporizador(n)

estouro do temporizador(n)r reenvia pacote n reinicia

temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como

ldquorecebidordquor se n for menor pacote natildeo

reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

r ACK(n)senatildeor ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 18: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Exemplo do Checksum Internetr 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

transbordo

somasoma de

verificaccedilatildeo

3 Camada de Transporte 18

Note que ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 19

Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)r importante nas

camadas de transporte e de enlace

r na lista dos 10 toacutepicos mais importantes em redes

r caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)

3 Camada de Transporte 20

Transferecircncia confiaacutevel o ponto de partida

ladotransmissor

ladoreceptor

rdt_send() chamada de cima (ex pela apl) Passa dados p serem

entregues agrave camada sup do receptor

udt_send() chamada pelo rdt para transferir um pacotes para o receptor sobre um canal natildeo

confiaacutevel

rdt_rcv() chamada quando pacote chega no lado receptor do

canal

deliver_data() chamada pelordt para entregar dados p camada

superior

3 Camada de Transporte 21

Transferecircncia confiaacutevel o ponto de partidaIremosr desenvolver incrementalmente os lados transmissor e receptor

de um protocolo confiaacutevel de transferecircncia de dados (rdt)r considerar apenas fluxo unidirecional de dados

m mas info de controle flui em ambos os sentidosr Usar maacutequinas de estados finitos (FSM) p especificar os

protocolos transmissor e receptor

estado1

estado2

evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado

estado neste ldquoestadordquo o proacuteximo estado eacute

determinado unicamente pelo proacuteximo evento

eventoaccedilotildees

3 Camada de Transporte 22

rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis

r canal de transmissatildeo perfeitamente confiaacutevelm natildeo haacute erros de bitsm natildeo haacute perda de pacotes

r FSMs separadas para transmissor e receptorm transmissor envia dados

pelo canal subjacentem receptor lecirc os dados do

canal subjacente

3 Camada de Transporte 23

rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote

m lembrete checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros

Como as pessoas recuperam ldquoerrosrdquodurante uma conversa

3 Camada de Transporte 24

rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote

m lembre-se checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros

m reconhecimentos (ACKs) receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente

m reconhecimentos negativos (NAKs) receptor avisa explicitamente ao transmissor que o pacote tinha erros

m transmissor reenvia o pacote ao receber um NAKr novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10)

m detecccedilatildeo de errosm Realimentaccedilatildeo (feedback) mensagens de controle (ACKNAK) do

receptor para o transmissor

3 Camada de Transporte 25

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

Animaccedilatildeo no slide

seguinte

rdt20 operaccedilatildeo com ausecircncia de erros

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 27

transmissor

receptor

rdt20 cenaacuterio de erro

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

r Transmissor natildeo sabe o que se passou no receptor

r natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas r transmissor retransmite o

uacuteltimo pacote se ACKNAK chegar com erro

r transmissor inclui nuacutemero de sequecircncia em cada pacote

r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda respostado receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

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

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

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

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeo

Transmissorr no de seq no pacoter bastam dois nos de

seq (01) Por quecircr deve verificar se

ACKNAK recebidos estatildeo corrompidos

r duplicou o no de estadosm estado deve ldquolembrarrdquo

se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptorr deve verificar se o

pacote recebido eacute uma duplicatam estado indica se no de

seq esperado eacute 0 ou 1r nota receptor natildeo tem

como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs

r mesma funcionalidade do rdt21 usando apenas ACKs

r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq

do pacote reconhecidor ACKs duplicados no transmissor resultam

na mesma accedilatildeo do NAK retransmissatildeo do pacote atual

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 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)

aguarda ACK

0fragmento FSMdo transmissor

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

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

r retransmite se nenhum ACK for recebido neste intervalo

r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

m receptor deve especificar no de seq do pacote sendo reconhecido

r requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1

ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30

r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15

ms pacote de 8000 bits

r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

r protocolo limita uso dos recursos fiacutesicos

U sender =

00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 ===RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx ==+

=RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios

pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor

r 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

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

000810008300240

RTT3

tx ==+

acute=

RLRLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se

houver falha de seqr Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletivar O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia acksindividuais para cada pacote

r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador

estourar retransmite apenas o pacote correspondente

3 Camada de Transporte 43

Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)

r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes

pendentes3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simplesr usa apenas ACK sempre envia

ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do

expectedseqnum

r pacotes fora de ordem m descarta (natildeo armazena) -gt

receptor natildeo usa buffersm reconhece pacote com o

nuacutemero de sequecircncia mais alto em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1

receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1

receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva

r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para

posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais

um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK

r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletiva

dados de cimar se proacutex no de seq (n)

disponiacutevel estiver na janela envia o pacote e liga temporizador(n)

estouro do temporizador(n)r reenvia pacote n reinicia

temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como

ldquorecebidordquor se n for menor pacote natildeo

reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

r ACK(n)senatildeor ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 19: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 19

Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)r importante nas

camadas de transporte e de enlace

r na lista dos 10 toacutepicos mais importantes em redes

r caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)

3 Camada de Transporte 20

Transferecircncia confiaacutevel o ponto de partida

ladotransmissor

ladoreceptor

rdt_send() chamada de cima (ex pela apl) Passa dados p serem

entregues agrave camada sup do receptor

udt_send() chamada pelo rdt para transferir um pacotes para o receptor sobre um canal natildeo

confiaacutevel

rdt_rcv() chamada quando pacote chega no lado receptor do

canal

deliver_data() chamada pelordt para entregar dados p camada

superior

3 Camada de Transporte 21

Transferecircncia confiaacutevel o ponto de partidaIremosr desenvolver incrementalmente os lados transmissor e receptor

de um protocolo confiaacutevel de transferecircncia de dados (rdt)r considerar apenas fluxo unidirecional de dados

m mas info de controle flui em ambos os sentidosr Usar maacutequinas de estados finitos (FSM) p especificar os

protocolos transmissor e receptor

estado1

estado2

evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado

estado neste ldquoestadordquo o proacuteximo estado eacute

determinado unicamente pelo proacuteximo evento

eventoaccedilotildees

3 Camada de Transporte 22

rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis

r canal de transmissatildeo perfeitamente confiaacutevelm natildeo haacute erros de bitsm natildeo haacute perda de pacotes

r FSMs separadas para transmissor e receptorm transmissor envia dados

pelo canal subjacentem receptor lecirc os dados do

canal subjacente

3 Camada de Transporte 23

rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote

m lembrete checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros

Como as pessoas recuperam ldquoerrosrdquodurante uma conversa

3 Camada de Transporte 24

rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote

m lembre-se checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros

m reconhecimentos (ACKs) receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente

m reconhecimentos negativos (NAKs) receptor avisa explicitamente ao transmissor que o pacote tinha erros

m transmissor reenvia o pacote ao receber um NAKr novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10)

m detecccedilatildeo de errosm Realimentaccedilatildeo (feedback) mensagens de controle (ACKNAK) do

receptor para o transmissor

3 Camada de Transporte 25

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

Animaccedilatildeo no slide

seguinte

rdt20 operaccedilatildeo com ausecircncia de erros

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 27

transmissor

receptor

rdt20 cenaacuterio de erro

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

r Transmissor natildeo sabe o que se passou no receptor

r natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas r transmissor retransmite o

uacuteltimo pacote se ACKNAK chegar com erro

r transmissor inclui nuacutemero de sequecircncia em cada pacote

r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda respostado receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

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

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

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

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeo

Transmissorr no de seq no pacoter bastam dois nos de

seq (01) Por quecircr deve verificar se

ACKNAK recebidos estatildeo corrompidos

r duplicou o no de estadosm estado deve ldquolembrarrdquo

se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptorr deve verificar se o

pacote recebido eacute uma duplicatam estado indica se no de

seq esperado eacute 0 ou 1r nota receptor natildeo tem

como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs

r mesma funcionalidade do rdt21 usando apenas ACKs

r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq

do pacote reconhecidor ACKs duplicados no transmissor resultam

na mesma accedilatildeo do NAK retransmissatildeo do pacote atual

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 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)

aguarda ACK

0fragmento FSMdo transmissor

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

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

r retransmite se nenhum ACK for recebido neste intervalo

r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

m receptor deve especificar no de seq do pacote sendo reconhecido

r requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1

ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30

r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15

ms pacote de 8000 bits

r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

r protocolo limita uso dos recursos fiacutesicos

U sender =

00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 ===RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx ==+

=RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios

pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor

r 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

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

000810008300240

RTT3

tx ==+

acute=

RLRLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se

houver falha de seqr Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletivar O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia acksindividuais para cada pacote

r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador

estourar retransmite apenas o pacote correspondente

3 Camada de Transporte 43

Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)

r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes

pendentes3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simplesr usa apenas ACK sempre envia

ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do

expectedseqnum

r pacotes fora de ordem m descarta (natildeo armazena) -gt

receptor natildeo usa buffersm reconhece pacote com o

nuacutemero de sequecircncia mais alto em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1

receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1

receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva

r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para

posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais

um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK

r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletiva

dados de cimar se proacutex no de seq (n)

disponiacutevel estiver na janela envia o pacote e liga temporizador(n)

estouro do temporizador(n)r reenvia pacote n reinicia

temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como

ldquorecebidordquor se n for menor pacote natildeo

reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

r ACK(n)senatildeor ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 20: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)r importante nas

camadas de transporte e de enlace

r na lista dos 10 toacutepicos mais importantes em redes

r caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)

3 Camada de Transporte 20

Transferecircncia confiaacutevel o ponto de partida

ladotransmissor

ladoreceptor

rdt_send() chamada de cima (ex pela apl) Passa dados p serem

entregues agrave camada sup do receptor

udt_send() chamada pelo rdt para transferir um pacotes para o receptor sobre um canal natildeo

confiaacutevel

rdt_rcv() chamada quando pacote chega no lado receptor do

canal

deliver_data() chamada pelordt para entregar dados p camada

superior

3 Camada de Transporte 21

Transferecircncia confiaacutevel o ponto de partidaIremosr desenvolver incrementalmente os lados transmissor e receptor

de um protocolo confiaacutevel de transferecircncia de dados (rdt)r considerar apenas fluxo unidirecional de dados

m mas info de controle flui em ambos os sentidosr Usar maacutequinas de estados finitos (FSM) p especificar os

protocolos transmissor e receptor

estado1

estado2

evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado

estado neste ldquoestadordquo o proacuteximo estado eacute

determinado unicamente pelo proacuteximo evento

eventoaccedilotildees

3 Camada de Transporte 22

rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis

r canal de transmissatildeo perfeitamente confiaacutevelm natildeo haacute erros de bitsm natildeo haacute perda de pacotes

r FSMs separadas para transmissor e receptorm transmissor envia dados

pelo canal subjacentem receptor lecirc os dados do

canal subjacente

3 Camada de Transporte 23

rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote

m lembrete checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros

Como as pessoas recuperam ldquoerrosrdquodurante uma conversa

3 Camada de Transporte 24

rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote

m lembre-se checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros

m reconhecimentos (ACKs) receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente

m reconhecimentos negativos (NAKs) receptor avisa explicitamente ao transmissor que o pacote tinha erros

m transmissor reenvia o pacote ao receber um NAKr novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10)

m detecccedilatildeo de errosm Realimentaccedilatildeo (feedback) mensagens de controle (ACKNAK) do

receptor para o transmissor

3 Camada de Transporte 25

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

Animaccedilatildeo no slide

seguinte

rdt20 operaccedilatildeo com ausecircncia de erros

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 27

transmissor

receptor

rdt20 cenaacuterio de erro

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

r Transmissor natildeo sabe o que se passou no receptor

r natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas r transmissor retransmite o

uacuteltimo pacote se ACKNAK chegar com erro

r transmissor inclui nuacutemero de sequecircncia em cada pacote

r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda respostado receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

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

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

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

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeo

Transmissorr no de seq no pacoter bastam dois nos de

seq (01) Por quecircr deve verificar se

ACKNAK recebidos estatildeo corrompidos

r duplicou o no de estadosm estado deve ldquolembrarrdquo

se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptorr deve verificar se o

pacote recebido eacute uma duplicatam estado indica se no de

seq esperado eacute 0 ou 1r nota receptor natildeo tem

como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs

r mesma funcionalidade do rdt21 usando apenas ACKs

r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq

do pacote reconhecidor ACKs duplicados no transmissor resultam

na mesma accedilatildeo do NAK retransmissatildeo do pacote atual

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 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)

aguarda ACK

0fragmento FSMdo transmissor

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

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

r retransmite se nenhum ACK for recebido neste intervalo

r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

m receptor deve especificar no de seq do pacote sendo reconhecido

r requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1

ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30

r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15

ms pacote de 8000 bits

r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

r protocolo limita uso dos recursos fiacutesicos

U sender =

00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 ===RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx ==+

=RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios

pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor

r 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

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

000810008300240

RTT3

tx ==+

acute=

RLRLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se

houver falha de seqr Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletivar O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia acksindividuais para cada pacote

r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador

estourar retransmite apenas o pacote correspondente

3 Camada de Transporte 43

Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)

r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes

pendentes3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simplesr usa apenas ACK sempre envia

ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do

expectedseqnum

r pacotes fora de ordem m descarta (natildeo armazena) -gt

receptor natildeo usa buffersm reconhece pacote com o

nuacutemero de sequecircncia mais alto em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1

receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1

receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva

r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para

posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais

um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK

r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletiva

dados de cimar se proacutex no de seq (n)

disponiacutevel estiver na janela envia o pacote e liga temporizador(n)

estouro do temporizador(n)r reenvia pacote n reinicia

temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como

ldquorecebidordquor se n for menor pacote natildeo

reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

r ACK(n)senatildeor ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 21: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Transferecircncia confiaacutevel o ponto de partida

ladotransmissor

ladoreceptor

rdt_send() chamada de cima (ex pela apl) Passa dados p serem

entregues agrave camada sup do receptor

udt_send() chamada pelo rdt para transferir um pacotes para o receptor sobre um canal natildeo

confiaacutevel

rdt_rcv() chamada quando pacote chega no lado receptor do

canal

deliver_data() chamada pelordt para entregar dados p camada

superior

3 Camada de Transporte 21

Transferecircncia confiaacutevel o ponto de partidaIremosr desenvolver incrementalmente os lados transmissor e receptor

de um protocolo confiaacutevel de transferecircncia de dados (rdt)r considerar apenas fluxo unidirecional de dados

m mas info de controle flui em ambos os sentidosr Usar maacutequinas de estados finitos (FSM) p especificar os

protocolos transmissor e receptor

estado1

estado2

evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado

estado neste ldquoestadordquo o proacuteximo estado eacute

determinado unicamente pelo proacuteximo evento

eventoaccedilotildees

3 Camada de Transporte 22

rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis

r canal de transmissatildeo perfeitamente confiaacutevelm natildeo haacute erros de bitsm natildeo haacute perda de pacotes

r FSMs separadas para transmissor e receptorm transmissor envia dados

pelo canal subjacentem receptor lecirc os dados do

canal subjacente

3 Camada de Transporte 23

rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote

m lembrete checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros

Como as pessoas recuperam ldquoerrosrdquodurante uma conversa

3 Camada de Transporte 24

rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote

m lembre-se checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros

m reconhecimentos (ACKs) receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente

m reconhecimentos negativos (NAKs) receptor avisa explicitamente ao transmissor que o pacote tinha erros

m transmissor reenvia o pacote ao receber um NAKr novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10)

m detecccedilatildeo de errosm Realimentaccedilatildeo (feedback) mensagens de controle (ACKNAK) do

receptor para o transmissor

3 Camada de Transporte 25

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

Animaccedilatildeo no slide

seguinte

rdt20 operaccedilatildeo com ausecircncia de erros

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 27

transmissor

receptor

rdt20 cenaacuterio de erro

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

r Transmissor natildeo sabe o que se passou no receptor

r natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas r transmissor retransmite o

uacuteltimo pacote se ACKNAK chegar com erro

r transmissor inclui nuacutemero de sequecircncia em cada pacote

r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda respostado receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

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

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

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

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeo

Transmissorr no de seq no pacoter bastam dois nos de

seq (01) Por quecircr deve verificar se

ACKNAK recebidos estatildeo corrompidos

r duplicou o no de estadosm estado deve ldquolembrarrdquo

se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptorr deve verificar se o

pacote recebido eacute uma duplicatam estado indica se no de

seq esperado eacute 0 ou 1r nota receptor natildeo tem

como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs

r mesma funcionalidade do rdt21 usando apenas ACKs

r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq

do pacote reconhecidor ACKs duplicados no transmissor resultam

na mesma accedilatildeo do NAK retransmissatildeo do pacote atual

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 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)

aguarda ACK

0fragmento FSMdo transmissor

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

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

r retransmite se nenhum ACK for recebido neste intervalo

r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

m receptor deve especificar no de seq do pacote sendo reconhecido

r requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1

ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30

r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15

ms pacote de 8000 bits

r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

r protocolo limita uso dos recursos fiacutesicos

U sender =

00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 ===RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx ==+

=RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios

pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor

r 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

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

000810008300240

RTT3

tx ==+

acute=

RLRLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se

houver falha de seqr Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletivar O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia acksindividuais para cada pacote

r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador

estourar retransmite apenas o pacote correspondente

3 Camada de Transporte 43

Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)

r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes

pendentes3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simplesr usa apenas ACK sempre envia

ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do

expectedseqnum

r pacotes fora de ordem m descarta (natildeo armazena) -gt

receptor natildeo usa buffersm reconhece pacote com o

nuacutemero de sequecircncia mais alto em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1

receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1

receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva

r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para

posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais

um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK

r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletiva

dados de cimar se proacutex no de seq (n)

disponiacutevel estiver na janela envia o pacote e liga temporizador(n)

estouro do temporizador(n)r reenvia pacote n reinicia

temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como

ldquorecebidordquor se n for menor pacote natildeo

reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

r ACK(n)senatildeor ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 22: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Transferecircncia confiaacutevel o ponto de partidaIremosr desenvolver incrementalmente os lados transmissor e receptor

de um protocolo confiaacutevel de transferecircncia de dados (rdt)r considerar apenas fluxo unidirecional de dados

m mas info de controle flui em ambos os sentidosr Usar maacutequinas de estados finitos (FSM) p especificar os

protocolos transmissor e receptor

estado1

estado2

evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado

estado neste ldquoestadordquo o proacuteximo estado eacute

determinado unicamente pelo proacuteximo evento

eventoaccedilotildees

3 Camada de Transporte 22

rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis

r canal de transmissatildeo perfeitamente confiaacutevelm natildeo haacute erros de bitsm natildeo haacute perda de pacotes

r FSMs separadas para transmissor e receptorm transmissor envia dados

pelo canal subjacentem receptor lecirc os dados do

canal subjacente

3 Camada de Transporte 23

rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote

m lembrete checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros

Como as pessoas recuperam ldquoerrosrdquodurante uma conversa

3 Camada de Transporte 24

rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote

m lembre-se checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros

m reconhecimentos (ACKs) receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente

m reconhecimentos negativos (NAKs) receptor avisa explicitamente ao transmissor que o pacote tinha erros

m transmissor reenvia o pacote ao receber um NAKr novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10)

m detecccedilatildeo de errosm Realimentaccedilatildeo (feedback) mensagens de controle (ACKNAK) do

receptor para o transmissor

3 Camada de Transporte 25

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

Animaccedilatildeo no slide

seguinte

rdt20 operaccedilatildeo com ausecircncia de erros

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 27

transmissor

receptor

rdt20 cenaacuterio de erro

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

r Transmissor natildeo sabe o que se passou no receptor

r natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas r transmissor retransmite o

uacuteltimo pacote se ACKNAK chegar com erro

r transmissor inclui nuacutemero de sequecircncia em cada pacote

r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda respostado receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

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

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

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

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeo

Transmissorr no de seq no pacoter bastam dois nos de

seq (01) Por quecircr deve verificar se

ACKNAK recebidos estatildeo corrompidos

r duplicou o no de estadosm estado deve ldquolembrarrdquo

se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptorr deve verificar se o

pacote recebido eacute uma duplicatam estado indica se no de

seq esperado eacute 0 ou 1r nota receptor natildeo tem

como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs

r mesma funcionalidade do rdt21 usando apenas ACKs

r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq

do pacote reconhecidor ACKs duplicados no transmissor resultam

na mesma accedilatildeo do NAK retransmissatildeo do pacote atual

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 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)

aguarda ACK

0fragmento FSMdo transmissor

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

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

r retransmite se nenhum ACK for recebido neste intervalo

r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

m receptor deve especificar no de seq do pacote sendo reconhecido

r requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1

ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30

r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15

ms pacote de 8000 bits

r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

r protocolo limita uso dos recursos fiacutesicos

U sender =

00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 ===RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx ==+

=RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios

pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor

r 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

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

000810008300240

RTT3

tx ==+

acute=

RLRLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se

houver falha de seqr Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletivar O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia acksindividuais para cada pacote

r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador

estourar retransmite apenas o pacote correspondente

3 Camada de Transporte 43

Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)

r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes

pendentes3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simplesr usa apenas ACK sempre envia

ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do

expectedseqnum

r pacotes fora de ordem m descarta (natildeo armazena) -gt

receptor natildeo usa buffersm reconhece pacote com o

nuacutemero de sequecircncia mais alto em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1

receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1

receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva

r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para

posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais

um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK

r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletiva

dados de cimar se proacutex no de seq (n)

disponiacutevel estiver na janela envia o pacote e liga temporizador(n)

estouro do temporizador(n)r reenvia pacote n reinicia

temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como

ldquorecebidordquor se n for menor pacote natildeo

reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

r ACK(n)senatildeor ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 23: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis

r canal de transmissatildeo perfeitamente confiaacutevelm natildeo haacute erros de bitsm natildeo haacute perda de pacotes

r FSMs separadas para transmissor e receptorm transmissor envia dados

pelo canal subjacentem receptor lecirc os dados do

canal subjacente

3 Camada de Transporte 23

rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote

m lembrete checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros

Como as pessoas recuperam ldquoerrosrdquodurante uma conversa

3 Camada de Transporte 24

rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote

m lembre-se checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros

m reconhecimentos (ACKs) receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente

m reconhecimentos negativos (NAKs) receptor avisa explicitamente ao transmissor que o pacote tinha erros

m transmissor reenvia o pacote ao receber um NAKr novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10)

m detecccedilatildeo de errosm Realimentaccedilatildeo (feedback) mensagens de controle (ACKNAK) do

receptor para o transmissor

3 Camada de Transporte 25

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

Animaccedilatildeo no slide

seguinte

rdt20 operaccedilatildeo com ausecircncia de erros

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 27

transmissor

receptor

rdt20 cenaacuterio de erro

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

r Transmissor natildeo sabe o que se passou no receptor

r natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas r transmissor retransmite o

uacuteltimo pacote se ACKNAK chegar com erro

r transmissor inclui nuacutemero de sequecircncia em cada pacote

r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda respostado receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

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

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

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

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeo

Transmissorr no de seq no pacoter bastam dois nos de

seq (01) Por quecircr deve verificar se

ACKNAK recebidos estatildeo corrompidos

r duplicou o no de estadosm estado deve ldquolembrarrdquo

se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptorr deve verificar se o

pacote recebido eacute uma duplicatam estado indica se no de

seq esperado eacute 0 ou 1r nota receptor natildeo tem

como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs

r mesma funcionalidade do rdt21 usando apenas ACKs

r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq

do pacote reconhecidor ACKs duplicados no transmissor resultam

na mesma accedilatildeo do NAK retransmissatildeo do pacote atual

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 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)

aguarda ACK

0fragmento FSMdo transmissor

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

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

r retransmite se nenhum ACK for recebido neste intervalo

r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

m receptor deve especificar no de seq do pacote sendo reconhecido

r requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1

ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30

r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15

ms pacote de 8000 bits

r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

r protocolo limita uso dos recursos fiacutesicos

U sender =

00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 ===RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx ==+

=RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios

pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor

r 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

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

000810008300240

RTT3

tx ==+

acute=

RLRLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se

houver falha de seqr Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletivar O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia acksindividuais para cada pacote

r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador

estourar retransmite apenas o pacote correspondente

3 Camada de Transporte 43

Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)

r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes

pendentes3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simplesr usa apenas ACK sempre envia

ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do

expectedseqnum

r pacotes fora de ordem m descarta (natildeo armazena) -gt

receptor natildeo usa buffersm reconhece pacote com o

nuacutemero de sequecircncia mais alto em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1

receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1

receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva

r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para

posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais

um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK

r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletiva

dados de cimar se proacutex no de seq (n)

disponiacutevel estiver na janela envia o pacote e liga temporizador(n)

estouro do temporizador(n)r reenvia pacote n reinicia

temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como

ldquorecebidordquor se n for menor pacote natildeo

reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

r ACK(n)senatildeor ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 24: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote

m lembrete checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros

Como as pessoas recuperam ldquoerrosrdquodurante uma conversa

3 Camada de Transporte 24

rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote

m lembre-se checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros

m reconhecimentos (ACKs) receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente

m reconhecimentos negativos (NAKs) receptor avisa explicitamente ao transmissor que o pacote tinha erros

m transmissor reenvia o pacote ao receber um NAKr novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10)

m detecccedilatildeo de errosm Realimentaccedilatildeo (feedback) mensagens de controle (ACKNAK) do

receptor para o transmissor

3 Camada de Transporte 25

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

Animaccedilatildeo no slide

seguinte

rdt20 operaccedilatildeo com ausecircncia de erros

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 27

transmissor

receptor

rdt20 cenaacuterio de erro

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

r Transmissor natildeo sabe o que se passou no receptor

r natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas r transmissor retransmite o

uacuteltimo pacote se ACKNAK chegar com erro

r transmissor inclui nuacutemero de sequecircncia em cada pacote

r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda respostado receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

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

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

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

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeo

Transmissorr no de seq no pacoter bastam dois nos de

seq (01) Por quecircr deve verificar se

ACKNAK recebidos estatildeo corrompidos

r duplicou o no de estadosm estado deve ldquolembrarrdquo

se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptorr deve verificar se o

pacote recebido eacute uma duplicatam estado indica se no de

seq esperado eacute 0 ou 1r nota receptor natildeo tem

como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs

r mesma funcionalidade do rdt21 usando apenas ACKs

r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq

do pacote reconhecidor ACKs duplicados no transmissor resultam

na mesma accedilatildeo do NAK retransmissatildeo do pacote atual

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 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)

aguarda ACK

0fragmento FSMdo transmissor

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

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

r retransmite se nenhum ACK for recebido neste intervalo

r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

m receptor deve especificar no de seq do pacote sendo reconhecido

r requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1

ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30

r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15

ms pacote de 8000 bits

r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

r protocolo limita uso dos recursos fiacutesicos

U sender =

00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 ===RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx ==+

=RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios

pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor

r 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

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

000810008300240

RTT3

tx ==+

acute=

RLRLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se

houver falha de seqr Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletivar O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia acksindividuais para cada pacote

r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador

estourar retransmite apenas o pacote correspondente

3 Camada de Transporte 43

Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)

r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes

pendentes3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simplesr usa apenas ACK sempre envia

ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do

expectedseqnum

r pacotes fora de ordem m descarta (natildeo armazena) -gt

receptor natildeo usa buffersm reconhece pacote com o

nuacutemero de sequecircncia mais alto em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1

receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1

receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva

r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para

posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais

um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK

r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletiva

dados de cimar se proacutex no de seq (n)

disponiacutevel estiver na janela envia o pacote e liga temporizador(n)

estouro do temporizador(n)r reenvia pacote n reinicia

temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como

ldquorecebidordquor se n for menor pacote natildeo

reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

r ACK(n)senatildeor ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 25: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

rdt20 canal com erros de bitsr canal subjacente pode trocar valores dos bits num pacote

m lembre-se checksum UDP pode detectar erros de bitsr a questatildeo como recuperar esses erros

m reconhecimentos (ACKs) receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente

m reconhecimentos negativos (NAKs) receptor avisa explicitamente ao transmissor que o pacote tinha erros

m transmissor reenvia o pacote ao receber um NAKr novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10)

m detecccedilatildeo de errosm Realimentaccedilatildeo (feedback) mensagens de controle (ACKNAK) do

receptor para o transmissor

3 Camada de Transporte 25

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

Animaccedilatildeo no slide

seguinte

rdt20 operaccedilatildeo com ausecircncia de erros

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 27

transmissor

receptor

rdt20 cenaacuterio de erro

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

r Transmissor natildeo sabe o que se passou no receptor

r natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas r transmissor retransmite o

uacuteltimo pacote se ACKNAK chegar com erro

r transmissor inclui nuacutemero de sequecircncia em cada pacote

r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda respostado receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

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

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

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

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeo

Transmissorr no de seq no pacoter bastam dois nos de

seq (01) Por quecircr deve verificar se

ACKNAK recebidos estatildeo corrompidos

r duplicou o no de estadosm estado deve ldquolembrarrdquo

se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptorr deve verificar se o

pacote recebido eacute uma duplicatam estado indica se no de

seq esperado eacute 0 ou 1r nota receptor natildeo tem

como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs

r mesma funcionalidade do rdt21 usando apenas ACKs

r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq

do pacote reconhecidor ACKs duplicados no transmissor resultam

na mesma accedilatildeo do NAK retransmissatildeo do pacote atual

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 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)

aguarda ACK

0fragmento FSMdo transmissor

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

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

r retransmite se nenhum ACK for recebido neste intervalo

r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

m receptor deve especificar no de seq do pacote sendo reconhecido

r requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1

ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30

r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15

ms pacote de 8000 bits

r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

r protocolo limita uso dos recursos fiacutesicos

U sender =

00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 ===RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx ==+

=RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios

pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor

r 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

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

000810008300240

RTT3

tx ==+

acute=

RLRLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se

houver falha de seqr Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletivar O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia acksindividuais para cada pacote

r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador

estourar retransmite apenas o pacote correspondente

3 Camada de Transporte 43

Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)

r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes

pendentes3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simplesr usa apenas ACK sempre envia

ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do

expectedseqnum

r pacotes fora de ordem m descarta (natildeo armazena) -gt

receptor natildeo usa buffersm reconhece pacote com o

nuacutemero de sequecircncia mais alto em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1

receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1

receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva

r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para

posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais

um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK

r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletiva

dados de cimar se proacutex no de seq (n)

disponiacutevel estiver na janela envia o pacote e liga temporizador(n)

estouro do temporizador(n)r reenvia pacote n reinicia

temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como

ldquorecebidordquor se n for menor pacote natildeo

reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

r ACK(n)senatildeor ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 26: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

Animaccedilatildeo no slide

seguinte

rdt20 operaccedilatildeo com ausecircncia de erros

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 27

transmissor

receptor

rdt20 cenaacuterio de erro

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

r Transmissor natildeo sabe o que se passou no receptor

r natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas r transmissor retransmite o

uacuteltimo pacote se ACKNAK chegar com erro

r transmissor inclui nuacutemero de sequecircncia em cada pacote

r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda respostado receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

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

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

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

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeo

Transmissorr no de seq no pacoter bastam dois nos de

seq (01) Por quecircr deve verificar se

ACKNAK recebidos estatildeo corrompidos

r duplicou o no de estadosm estado deve ldquolembrarrdquo

se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptorr deve verificar se o

pacote recebido eacute uma duplicatam estado indica se no de

seq esperado eacute 0 ou 1r nota receptor natildeo tem

como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs

r mesma funcionalidade do rdt21 usando apenas ACKs

r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq

do pacote reconhecidor ACKs duplicados no transmissor resultam

na mesma accedilatildeo do NAK retransmissatildeo do pacote atual

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 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)

aguarda ACK

0fragmento FSMdo transmissor

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

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

r retransmite se nenhum ACK for recebido neste intervalo

r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

m receptor deve especificar no de seq do pacote sendo reconhecido

r requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1

ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30

r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15

ms pacote de 8000 bits

r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

r protocolo limita uso dos recursos fiacutesicos

U sender =

00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 ===RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx ==+

=RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios

pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor

r 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

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

000810008300240

RTT3

tx ==+

acute=

RLRLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se

houver falha de seqr Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletivar O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia acksindividuais para cada pacote

r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador

estourar retransmite apenas o pacote correspondente

3 Camada de Transporte 43

Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)

r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes

pendentes3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simplesr usa apenas ACK sempre envia

ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do

expectedseqnum

r pacotes fora de ordem m descarta (natildeo armazena) -gt

receptor natildeo usa buffersm reconhece pacote com o

nuacutemero de sequecircncia mais alto em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1

receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1

receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva

r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para

posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais

um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK

r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletiva

dados de cimar se proacutex no de seq (n)

disponiacutevel estiver na janela envia o pacote e liga temporizador(n)

estouro do temporizador(n)r reenvia pacote n reinicia

temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como

ldquorecebidordquor se n for menor pacote natildeo

reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

r ACK(n)senatildeor ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 27: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

rdt20 operaccedilatildeo com ausecircncia de erros

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 27

transmissor

receptor

rdt20 cenaacuterio de erro

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

r Transmissor natildeo sabe o que se passou no receptor

r natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas r transmissor retransmite o

uacuteltimo pacote se ACKNAK chegar com erro

r transmissor inclui nuacutemero de sequecircncia em cada pacote

r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda respostado receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

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

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

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

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeo

Transmissorr no de seq no pacoter bastam dois nos de

seq (01) Por quecircr deve verificar se

ACKNAK recebidos estatildeo corrompidos

r duplicou o no de estadosm estado deve ldquolembrarrdquo

se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptorr deve verificar se o

pacote recebido eacute uma duplicatam estado indica se no de

seq esperado eacute 0 ou 1r nota receptor natildeo tem

como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs

r mesma funcionalidade do rdt21 usando apenas ACKs

r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq

do pacote reconhecidor ACKs duplicados no transmissor resultam

na mesma accedilatildeo do NAK retransmissatildeo do pacote atual

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 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)

aguarda ACK

0fragmento FSMdo transmissor

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

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

r retransmite se nenhum ACK for recebido neste intervalo

r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

m receptor deve especificar no de seq do pacote sendo reconhecido

r requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1

ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30

r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15

ms pacote de 8000 bits

r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

r protocolo limita uso dos recursos fiacutesicos

U sender =

00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 ===RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx ==+

=RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios

pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor

r 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

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

000810008300240

RTT3

tx ==+

acute=

RLRLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se

houver falha de seqr Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletivar O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia acksindividuais para cada pacote

r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador

estourar retransmite apenas o pacote correspondente

3 Camada de Transporte 43

Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)

r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes

pendentes3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simplesr usa apenas ACK sempre envia

ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do

expectedseqnum

r pacotes fora de ordem m descarta (natildeo armazena) -gt

receptor natildeo usa buffersm reconhece pacote com o

nuacutemero de sequecircncia mais alto em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1

receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1

receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva

r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para

posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais

um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK

r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletiva

dados de cimar se proacutex no de seq (n)

disponiacutevel estiver na janela envia o pacote e liga temporizador(n)

estouro do temporizador(n)r reenvia pacote n reinicia

temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como

ldquorecebidordquor se n for menor pacote natildeo

reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

r ACK(n)senatildeor ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 28: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

rdt20 cenaacuterio de erro

Wait for call from above

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)

Wait for ACK or

NAK

Wait for call from

below

rdt_send(data)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

r Transmissor natildeo sabe o que se passou no receptor

r natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas r transmissor retransmite o

uacuteltimo pacote se ACKNAK chegar com erro

r transmissor inclui nuacutemero de sequecircncia em cada pacote

r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda respostado receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

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

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

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

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeo

Transmissorr no de seq no pacoter bastam dois nos de

seq (01) Por quecircr deve verificar se

ACKNAK recebidos estatildeo corrompidos

r duplicou o no de estadosm estado deve ldquolembrarrdquo

se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptorr deve verificar se o

pacote recebido eacute uma duplicatam estado indica se no de

seq esperado eacute 0 ou 1r nota receptor natildeo tem

como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs

r mesma funcionalidade do rdt21 usando apenas ACKs

r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq

do pacote reconhecidor ACKs duplicados no transmissor resultam

na mesma accedilatildeo do NAK retransmissatildeo do pacote atual

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 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)

aguarda ACK

0fragmento FSMdo transmissor

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

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

r retransmite se nenhum ACK for recebido neste intervalo

r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

m receptor deve especificar no de seq do pacote sendo reconhecido

r requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1

ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30

r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15

ms pacote de 8000 bits

r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

r protocolo limita uso dos recursos fiacutesicos

U sender =

00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 ===RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx ==+

=RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios

pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor

r 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

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

000810008300240

RTT3

tx ==+

acute=

RLRLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se

houver falha de seqr Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletivar O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia acksindividuais para cada pacote

r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador

estourar retransmite apenas o pacote correspondente

3 Camada de Transporte 43

Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)

r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes

pendentes3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simplesr usa apenas ACK sempre envia

ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do

expectedseqnum

r pacotes fora de ordem m descarta (natildeo armazena) -gt

receptor natildeo usa buffersm reconhece pacote com o

nuacutemero de sequecircncia mais alto em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1

receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1

receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva

r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para

posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais

um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK

r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletiva

dados de cimar se proacutex no de seq (n)

disponiacutevel estiver na janela envia o pacote e liga temporizador(n)

estouro do temporizador(n)r reenvia pacote n reinicia

temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como

ldquorecebidordquor se n for menor pacote natildeo

reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

r ACK(n)senatildeor ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 29: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

r Transmissor natildeo sabe o que se passou no receptor

r natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas r transmissor retransmite o

uacuteltimo pacote se ACKNAK chegar com erro

r transmissor inclui nuacutemero de sequecircncia em cada pacote

r receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda respostado receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

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

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

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

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeo

Transmissorr no de seq no pacoter bastam dois nos de

seq (01) Por quecircr deve verificar se

ACKNAK recebidos estatildeo corrompidos

r duplicou o no de estadosm estado deve ldquolembrarrdquo

se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptorr deve verificar se o

pacote recebido eacute uma duplicatam estado indica se no de

seq esperado eacute 0 ou 1r nota receptor natildeo tem

como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs

r mesma funcionalidade do rdt21 usando apenas ACKs

r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq

do pacote reconhecidor ACKs duplicados no transmissor resultam

na mesma accedilatildeo do NAK retransmissatildeo do pacote atual

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 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)

aguarda ACK

0fragmento FSMdo transmissor

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

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

r retransmite se nenhum ACK for recebido neste intervalo

r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

m receptor deve especificar no de seq do pacote sendo reconhecido

r requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1

ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30

r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15

ms pacote de 8000 bits

r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

r protocolo limita uso dos recursos fiacutesicos

U sender =

00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 ===RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx ==+

=RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios

pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor

r 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

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

000810008300240

RTT3

tx ==+

acute=

RLRLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se

houver falha de seqr Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletivar O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia acksindividuais para cada pacote

r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador

estourar retransmite apenas o pacote correspondente

3 Camada de Transporte 43

Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)

r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes

pendentes3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simplesr usa apenas ACK sempre envia

ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do

expectedseqnum

r pacotes fora de ordem m descarta (natildeo armazena) -gt

receptor natildeo usa buffersm reconhece pacote com o

nuacutemero de sequecircncia mais alto em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1

receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1

receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva

r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para

posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais

um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK

r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletiva

dados de cimar se proacutex no de seq (n)

disponiacutevel estiver na janela envia o pacote e liga temporizador(n)

estouro do temporizador(n)r reenvia pacote n reinicia

temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como

ldquorecebidordquor se n for menor pacote natildeo

reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

r ACK(n)senatildeor ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 30: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

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

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

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

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeo

Transmissorr no de seq no pacoter bastam dois nos de

seq (01) Por quecircr deve verificar se

ACKNAK recebidos estatildeo corrompidos

r duplicou o no de estadosm estado deve ldquolembrarrdquo

se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptorr deve verificar se o

pacote recebido eacute uma duplicatam estado indica se no de

seq esperado eacute 0 ou 1r nota receptor natildeo tem

como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs

r mesma funcionalidade do rdt21 usando apenas ACKs

r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq

do pacote reconhecidor ACKs duplicados no transmissor resultam

na mesma accedilatildeo do NAK retransmissatildeo do pacote atual

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 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)

aguarda ACK

0fragmento FSMdo transmissor

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

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

r retransmite se nenhum ACK for recebido neste intervalo

r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

m receptor deve especificar no de seq do pacote sendo reconhecido

r requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1

ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30

r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15

ms pacote de 8000 bits

r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

r protocolo limita uso dos recursos fiacutesicos

U sender =

00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 ===RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx ==+

=RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios

pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor

r 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

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

000810008300240

RTT3

tx ==+

acute=

RLRLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se

houver falha de seqr Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletivar O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia acksindividuais para cada pacote

r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador

estourar retransmite apenas o pacote correspondente

3 Camada de Transporte 43

Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)

r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes

pendentes3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simplesr usa apenas ACK sempre envia

ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do

expectedseqnum

r pacotes fora de ordem m descarta (natildeo armazena) -gt

receptor natildeo usa buffersm reconhece pacote com o

nuacutemero de sequecircncia mais alto em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1

receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1

receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva

r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para

posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais

um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK

r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletiva

dados de cimar se proacutex no de seq (n)

disponiacutevel estiver na janela envia o pacote e liga temporizador(n)

estouro do temporizador(n)r reenvia pacote n reinicia

temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como

ldquorecebidordquor se n for menor pacote natildeo

reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

r ACK(n)senatildeor ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 31: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

sndpkt = make_pkt(NAK chksum)udt_send(sndpkt)

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

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

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

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeo

Transmissorr no de seq no pacoter bastam dois nos de

seq (01) Por quecircr deve verificar se

ACKNAK recebidos estatildeo corrompidos

r duplicou o no de estadosm estado deve ldquolembrarrdquo

se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptorr deve verificar se o

pacote recebido eacute uma duplicatam estado indica se no de

seq esperado eacute 0 ou 1r nota receptor natildeo tem

como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs

r mesma funcionalidade do rdt21 usando apenas ACKs

r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq

do pacote reconhecidor ACKs duplicados no transmissor resultam

na mesma accedilatildeo do NAK retransmissatildeo do pacote atual

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 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)

aguarda ACK

0fragmento FSMdo transmissor

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

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

r retransmite se nenhum ACK for recebido neste intervalo

r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

m receptor deve especificar no de seq do pacote sendo reconhecido

r requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1

ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30

r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15

ms pacote de 8000 bits

r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

r protocolo limita uso dos recursos fiacutesicos

U sender =

00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 ===RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx ==+

=RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios

pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor

r 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

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

000810008300240

RTT3

tx ==+

acute=

RLRLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se

houver falha de seqr Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletivar O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia acksindividuais para cada pacote

r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador

estourar retransmite apenas o pacote correspondente

3 Camada de Transporte 43

Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)

r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes

pendentes3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simplesr usa apenas ACK sempre envia

ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do

expectedseqnum

r pacotes fora de ordem m descarta (natildeo armazena) -gt

receptor natildeo usa buffersm reconhece pacote com o

nuacutemero de sequecircncia mais alto em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1

receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1

receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva

r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para

posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais

um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK

r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletiva

dados de cimar se proacutex no de seq (n)

disponiacutevel estiver na janela envia o pacote e liga temporizador(n)

estouro do temporizador(n)r reenvia pacote n reinicia

temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como

ldquorecebidordquor se n for menor pacote natildeo

reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

r ACK(n)senatildeor ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 32: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

rdt21 discussatildeo

Transmissorr no de seq no pacoter bastam dois nos de

seq (01) Por quecircr deve verificar se

ACKNAK recebidos estatildeo corrompidos

r duplicou o no de estadosm estado deve ldquolembrarrdquo

se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptorr deve verificar se o

pacote recebido eacute uma duplicatam estado indica se no de

seq esperado eacute 0 ou 1r nota receptor natildeo tem

como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs

r mesma funcionalidade do rdt21 usando apenas ACKs

r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq

do pacote reconhecidor ACKs duplicados no transmissor resultam

na mesma accedilatildeo do NAK retransmissatildeo do pacote atual

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 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)

aguarda ACK

0fragmento FSMdo transmissor

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

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

r retransmite se nenhum ACK for recebido neste intervalo

r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

m receptor deve especificar no de seq do pacote sendo reconhecido

r requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1

ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30

r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15

ms pacote de 8000 bits

r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

r protocolo limita uso dos recursos fiacutesicos

U sender =

00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 ===RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx ==+

=RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios

pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor

r 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

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

000810008300240

RTT3

tx ==+

acute=

RLRLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se

houver falha de seqr Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletivar O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia acksindividuais para cada pacote

r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador

estourar retransmite apenas o pacote correspondente

3 Camada de Transporte 43

Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)

r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes

pendentes3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simplesr usa apenas ACK sempre envia

ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do

expectedseqnum

r pacotes fora de ordem m descarta (natildeo armazena) -gt

receptor natildeo usa buffersm reconhece pacote com o

nuacutemero de sequecircncia mais alto em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1

receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1

receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva

r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para

posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais

um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK

r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletiva

dados de cimar se proacutex no de seq (n)

disponiacutevel estiver na janela envia o pacote e liga temporizador(n)

estouro do temporizador(n)r reenvia pacote n reinicia

temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como

ldquorecebidordquor se n for menor pacote natildeo

reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

r ACK(n)senatildeor ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 33: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

rdt22 um protocolo sem NAKs

r mesma funcionalidade do rdt21 usando apenas ACKs

r ao inveacutes de NAK receptor envia ACK para uacuteltimo pacote recebido sem errom receptor deve incluir explicitamente no de seq

do pacote reconhecidor ACKs duplicados no transmissor resultam

na mesma accedilatildeo do NAK retransmissatildeo do pacote atual

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 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)

aguarda ACK

0fragmento FSMdo transmissor

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

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

r retransmite se nenhum ACK for recebido neste intervalo

r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

m receptor deve especificar no de seq do pacote sendo reconhecido

r requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1

ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30

r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15

ms pacote de 8000 bits

r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

r protocolo limita uso dos recursos fiacutesicos

U sender =

00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 ===RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx ==+

=RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios

pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor

r 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

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

000810008300240

RTT3

tx ==+

acute=

RLRLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se

houver falha de seqr Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletivar O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia acksindividuais para cada pacote

r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador

estourar retransmite apenas o pacote correspondente

3 Camada de Transporte 43

Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)

r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes

pendentes3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simplesr usa apenas ACK sempre envia

ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do

expectedseqnum

r pacotes fora de ordem m descarta (natildeo armazena) -gt

receptor natildeo usa buffersm reconhece pacote com o

nuacutemero de sequecircncia mais alto em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1

receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1

receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva

r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para

posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais

um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK

r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletiva

dados de cimar se proacutex no de seq (n)

disponiacutevel estiver na janela envia o pacote e liga temporizador(n)

estouro do temporizador(n)r reenvia pacote n reinicia

temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como

ldquorecebidordquor se n for menor pacote natildeo

reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

r ACK(n)senatildeor ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 34: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

rdt22 fragmentos do transmissor e receptor

aguarda chamada 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)

aguarda ACK

0fragmento FSMdo transmissor

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

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

r retransmite se nenhum ACK for recebido neste intervalo

r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

m receptor deve especificar no de seq do pacote sendo reconhecido

r requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1

ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30

r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15

ms pacote de 8000 bits

r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

r protocolo limita uso dos recursos fiacutesicos

U sender =

00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 ===RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx ==+

=RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios

pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor

r 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

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

000810008300240

RTT3

tx ==+

acute=

RLRLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se

houver falha de seqr Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletivar O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia acksindividuais para cada pacote

r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador

estourar retransmite apenas o pacote correspondente

3 Camada de Transporte 43

Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)

r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes

pendentes3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simplesr usa apenas ACK sempre envia

ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do

expectedseqnum

r pacotes fora de ordem m descarta (natildeo armazena) -gt

receptor natildeo usa buffersm reconhece pacote com o

nuacutemero de sequecircncia mais alto em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1

receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1

receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva

r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para

posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais

um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK

r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletiva

dados de cimar se proacutex no de seq (n)

disponiacutevel estiver na janela envia o pacote e liga temporizador(n)

estouro do temporizador(n)r reenvia pacote n reinicia

temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como

ldquorecebidordquor se n for menor pacote natildeo

reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

r ACK(n)senatildeor ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 35: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs)m checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo satildeo suficientes

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

r retransmite se nenhum ACK for recebido neste intervalo

r se pacote (ou ACK) estiver apenas atrasado (e natildeo perdido)m retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

m receptor deve especificar no de seq do pacote sendo reconhecido

r requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1

ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30

r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15

ms pacote de 8000 bits

r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

r protocolo limita uso dos recursos fiacutesicos

U sender =

00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 ===RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx ==+

=RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios

pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor

r 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

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

000810008300240

RTT3

tx ==+

acute=

RLRLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se

houver falha de seqr Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletivar O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia acksindividuais para cada pacote

r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador

estourar retransmite apenas o pacote correspondente

3 Camada de Transporte 43

Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)

r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes

pendentes3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simplesr usa apenas ACK sempre envia

ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do

expectedseqnum

r pacotes fora de ordem m descarta (natildeo armazena) -gt

receptor natildeo usa buffersm reconhece pacote com o

nuacutemero de sequecircncia mais alto em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1

receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1

receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva

r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para

posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais

um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK

r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletiva

dados de cimar se proacutex no de seq (n)

disponiacutevel estiver na janela envia o pacote e liga temporizador(n)

estouro do temporizador(n)r reenvia pacote n reinicia

temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como

ldquorecebidordquor se n for menor pacote natildeo

reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

r ACK(n)senatildeor ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 36: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1

ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30

r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15

ms pacote de 8000 bits

r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

r protocolo limita uso dos recursos fiacutesicos

U sender =

00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 ===RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx ==+

=RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios

pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor

r 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

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

000810008300240

RTT3

tx ==+

acute=

RLRLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se

houver falha de seqr Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletivar O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia acksindividuais para cada pacote

r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador

estourar retransmite apenas o pacote correspondente

3 Camada de Transporte 43

Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)

r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes

pendentes3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simplesr usa apenas ACK sempre envia

ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do

expectedseqnum

r pacotes fora de ordem m descarta (natildeo armazena) -gt

receptor natildeo usa buffersm reconhece pacote com o

nuacutemero de sequecircncia mais alto em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1

receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1

receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva

r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para

posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais

um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK

r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletiva

dados de cimar se proacutex no de seq (n)

disponiacutevel estiver na janela envia o pacote e liga temporizador(n)

estouro do temporizador(n)r reenvia pacote n reinicia

temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como

ldquorecebidordquor se n for menor pacote natildeo

reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

r ACK(n)senatildeor ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 37: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1

ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30

r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15

ms pacote de 8000 bits

r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

r protocolo limita uso dos recursos fiacutesicos

U sender =

00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 ===RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx ==+

=RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios

pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor

r 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

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

000810008300240

RTT3

tx ==+

acute=

RLRLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se

houver falha de seqr Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletivar O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia acksindividuais para cada pacote

r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador

estourar retransmite apenas o pacote correspondente

3 Camada de Transporte 43

Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)

r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes

pendentes3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simplesr usa apenas ACK sempre envia

ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do

expectedseqnum

r pacotes fora de ordem m descarta (natildeo armazena) -gt

receptor natildeo usa buffersm reconhece pacote com o

nuacutemero de sequecircncia mais alto em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1

receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1

receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva

r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para

posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais

um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK

r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletiva

dados de cimar se proacutex no de seq (n)

disponiacutevel estiver na janela envia o pacote e liga temporizador(n)

estouro do temporizador(n)r reenvia pacote n reinicia

temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como

ldquorecebidordquor se n for menor pacote natildeo

reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

r ACK(n)senatildeor ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 38: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1

ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30

r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15

ms pacote de 8000 bits

r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

r protocolo limita uso dos recursos fiacutesicos

U sender =

00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 ===RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx ==+

=RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios

pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor

r 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

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

000810008300240

RTT3

tx ==+

acute=

RLRLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se

houver falha de seqr Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletivar O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia acksindividuais para cada pacote

r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador

estourar retransmite apenas o pacote correspondente

3 Camada de Transporte 43

Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)

r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes

pendentes3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simplesr usa apenas ACK sempre envia

ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do

expectedseqnum

r pacotes fora de ordem m descarta (natildeo armazena) -gt

receptor natildeo usa buffersm reconhece pacote com o

nuacutemero de sequecircncia mais alto em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1

receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1

receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva

r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para

posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais

um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK

r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletiva

dados de cimar se proacutex no de seq (n)

disponiacutevel estiver na janela envia o pacote e liga temporizador(n)

estouro do temporizador(n)r reenvia pacote n reinicia

temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como

ldquorecebidordquor se n for menor pacote natildeo

reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

r ACK(n)senatildeor ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 39: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Desempenho do rdt30

r rdt30 funciona poreacutem seu desempenho eacute sofriacutevelr Exemplo enlace de 1 Gbps retardo fim a fim de 15

ms pacote de 8000 bits

r pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

r protocolo limita uso dos recursos fiacutesicos

U sender =

00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 ===RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx ==+

=RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios

pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor

r 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

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

000810008300240

RTT3

tx ==+

acute=

RLRLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se

houver falha de seqr Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletivar O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia acksindividuais para cada pacote

r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador

estourar retransmite apenas o pacote correspondente

3 Camada de Transporte 43

Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)

r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes

pendentes3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simplesr usa apenas ACK sempre envia

ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do

expectedseqnum

r pacotes fora de ordem m descarta (natildeo armazena) -gt

receptor natildeo usa buffersm reconhece pacote com o

nuacutemero de sequecircncia mais alto em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1

receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1

receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva

r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para

posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais

um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK

r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletiva

dados de cimar se proacutex no de seq (n)

disponiacutevel estiver na janela envia o pacote e liga temporizador(n)

estouro do temporizador(n)r reenvia pacote n reinicia

temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como

ldquorecebidordquor se n for menor pacote natildeo

reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

r ACK(n)senatildeor ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 40: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx ==+

=RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios

pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor

r 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

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

000810008300240

RTT3

tx ==+

acute=

RLRLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se

houver falha de seqr Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletivar O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia acksindividuais para cada pacote

r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador

estourar retransmite apenas o pacote correspondente

3 Camada de Transporte 43

Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)

r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes

pendentes3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simplesr usa apenas ACK sempre envia

ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do

expectedseqnum

r pacotes fora de ordem m descarta (natildeo armazena) -gt

receptor natildeo usa buffersm reconhece pacote com o

nuacutemero de sequecircncia mais alto em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1

receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1

receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva

r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para

posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais

um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK

r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletiva

dados de cimar se proacutex no de seq (n)

disponiacutevel estiver na janela envia o pacote e liga temporizador(n)

estouro do temporizador(n)r reenvia pacote n reinicia

temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como

ldquorecebidordquor se n for menor pacote natildeo

reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

r ACK(n)senatildeor ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 41: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Protocolos com paralelismo (pipelining)Paralelismo (pipelining) transmissor envia vaacuterios

pacotes em sequecircncia todos esperando para serem reconhecidosm faixa de nuacutemeros de sequecircncia deve ser aumentadam Armazenamento no transmissor eou no receptor

r 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

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

000810008300240

RTT3

tx ==+

acute=

RLRLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se

houver falha de seqr Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletivar O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia acksindividuais para cada pacote

r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador

estourar retransmite apenas o pacote correspondente

3 Camada de Transporte 43

Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)

r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes

pendentes3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simplesr usa apenas ACK sempre envia

ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do

expectedseqnum

r pacotes fora de ordem m descarta (natildeo armazena) -gt

receptor natildeo usa buffersm reconhece pacote com o

nuacutemero de sequecircncia mais alto em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1

receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1

receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva

r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para

posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais

um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK

r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletiva

dados de cimar se proacutex no de seq (n)

disponiacutevel estiver na janela envia o pacote e liga temporizador(n)

estouro do temporizador(n)r reenvia pacote n reinicia

temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como

ldquorecebidordquor se n for menor pacote natildeo

reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

r ACK(n)senatildeor ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 42: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Paralelismo aumento da utilizaccedilatildeo

000810008300240

RTT3

tx ==+

acute=

RLRLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se

houver falha de seqr Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletivar O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia acksindividuais para cada pacote

r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador

estourar retransmite apenas o pacote correspondente

3 Camada de Transporte 43

Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)

r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes

pendentes3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simplesr usa apenas ACK sempre envia

ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do

expectedseqnum

r pacotes fora de ordem m descarta (natildeo armazena) -gt

receptor natildeo usa buffersm reconhece pacote com o

nuacutemero de sequecircncia mais alto em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1

receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1

receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva

r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para

posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais

um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK

r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletiva

dados de cimar se proacutex no de seq (n)

disponiacutevel estiver na janela envia o pacote e liga temporizador(n)

estouro do temporizador(n)r reenvia pacote n reinicia

temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como

ldquorecebidordquor se n for menor pacote natildeo

reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

r ACK(n)senatildeor ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 43: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Protocolos com ParalelismoGo-back-N r O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia apenas ackscumulativosm Natildeo reconhece pacote se

houver falha de seqr Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecidom Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletivar O transmissor pode ter ateacute N

pacotes natildeo reconhecidos no ldquotubordquo

r Receptor envia acksindividuais para cada pacote

r Transmissor possui um temporizador para cada pacote ainda natildeo reconhecidom Se o temporizador

estourar retransmite apenas o pacote correspondente

3 Camada de Transporte 43

Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)

r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes

pendentes3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simplesr usa apenas ACK sempre envia

ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do

expectedseqnum

r pacotes fora de ordem m descarta (natildeo armazena) -gt

receptor natildeo usa buffersm reconhece pacote com o

nuacutemero de sequecircncia mais alto em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1

receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1

receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva

r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para

posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais

um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK

r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletiva

dados de cimar se proacutex no de seq (n)

disponiacutevel estiver na janela envia o pacote e liga temporizador(n)

estouro do temporizador(n)r reenvia pacote n reinicia

temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como

ldquorecebidordquor se n for menor pacote natildeo

reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

r ACK(n)senatildeor ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 44: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Go-back-N (GBN)Transmissorr no de seq de k-bits no cabeccedilalho do pacoter admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

r ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n -ldquoACKreconhecimento cumulativordquom pode receber ACKs duplicados (veja receptor)

r temporizador para o pacote mais antigo ainda natildeo confirmador Estouro do temporizador retransmite todos os pacotes

pendentes3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simplesr usa apenas ACK sempre envia

ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do

expectedseqnum

r pacotes fora de ordem m descarta (natildeo armazena) -gt

receptor natildeo usa buffersm reconhece pacote com o

nuacutemero de sequecircncia mais alto em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1

receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1

receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva

r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para

posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais

um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK

r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletiva

dados de cimar se proacutex no de seq (n)

disponiacutevel estiver na janela envia o pacote e liga temporizador(n)

estouro do temporizador(n)r reenvia pacote n reinicia

temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como

ldquorecebidordquor se n for menor pacote natildeo

reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

r ACK(n)senatildeor ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 45: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simplesr usa apenas ACK sempre envia

ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do

expectedseqnum

r pacotes fora de ordem m descarta (natildeo armazena) -gt

receptor natildeo usa buffersm reconhece pacote com o

nuacutemero de sequecircncia mais alto em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1

receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1

receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva

r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para

posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais

um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK

r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletiva

dados de cimar se proacutex no de seq (n)

disponiacutevel estiver na janela envia o pacote e liga temporizador(n)

estouro do temporizador(n)r reenvia pacote n reinicia

temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como

ldquorecebidordquor se n for menor pacote natildeo

reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

r ACK(n)senatildeor ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 46: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

GBN FSM estendida para o receptor

receptor simplesr usa apenas ACK sempre envia

ACK para pacote recebido corretamente com o maior no de seq em-ordemm pode gerar ACKs duplicadosm soacute precisa se lembrar do

expectedseqnum

r pacotes fora de ordem m descarta (natildeo armazena) -gt

receptor natildeo usa buffersm reconhece pacote com o

nuacutemero de sequecircncia mais alto em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1

receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1

receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva

r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para

posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais

um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK

r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletiva

dados de cimar se proacutex no de seq (n)

disponiacutevel estiver na janela envia o pacote e liga temporizador(n)

estouro do temporizador(n)r reenvia pacote n reinicia

temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como

ldquorecebidordquor se n for menor pacote natildeo

reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

r ACK(n)senatildeor ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 47: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1

receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1

receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva

r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para

posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais

um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK

r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletiva

dados de cimar se proacutex no de seq (n)

disponiacutevel estiver na janela envia o pacote e liga temporizador(n)

estouro do temporizador(n)r reenvia pacote n reinicia

temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como

ldquorecebidordquor se n for menor pacote natildeo

reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

r ACK(n)senatildeor ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 48: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Retransmissatildeo seletiva

r receptor reconhece individualmente todos os pacotes recebidos corretamentem armazena pacotes no buffer conforme necessaacuterio para

posterior entrega em-ordem agrave camada superiorr transmissor apenas reenvia pacotes para os quais

um ACK natildeo foi recebidom temporizador de remetente para cada pacote sem ACK

r janela do transmissatildeom N nuacutemeros de sequecircncia consecutivos m outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletiva

dados de cimar se proacutex no de seq (n)

disponiacutevel estiver na janela envia o pacote e liga temporizador(n)

estouro do temporizador(n)r reenvia pacote n reinicia

temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como

ldquorecebidordquor se n for menor pacote natildeo

reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

r ACK(n)senatildeor ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 49: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletiva

dados de cimar se proacutex no de seq (n)

disponiacutevel estiver na janela envia o pacote e liga temporizador(n)

estouro do temporizador(n)r reenvia pacote n reinicia

temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como

ldquorecebidordquor se n for menor pacote natildeo

reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

r ACK(n)senatildeor ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 50: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Retransmissatildeo seletiva

dados de cimar se proacutex no de seq (n)

disponiacutevel estiver na janela envia o pacote e liga temporizador(n)

estouro do temporizador(n)r reenvia pacote n reinicia

temporizador(n)ACK(n) em [sendbasesendbase+N]r marca pacote n como

ldquorecebidordquor se n for menor pacote natildeo

reconhecido avanccedila base da janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

r envia ACK(n)r fora de ordem armazenar em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

r ACK(n)senatildeor ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 51: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 52: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Retransmissatildeo seletiva dilemaExemplo r nos de seq 0 1 2 3r tam de janela =3

r receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

r incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 53: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 54: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

r transmissatildeo full duplexm fluxo de dados bi-direcional

na mesma conexatildeom MSS tamanho maacuteximo de

segmentor orientado a conexatildeo

m handshaking (troca de msgsde controle) inicia estado do transmissor e do receptor antes da troca de dados

r fluxo controladom receptor natildeo seraacute afogado

pelo transmissor

r ponto a pontom um transmissor um receptor

r fluxo de bytes ordenados confiaacutevelm natildeo estruturado em msgs

r com paralelismo (pipelined)m tam da janela ajustado por

controle de fluxo e congestionamento do TCP

3 Camada de Transporte 54

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 55: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Estrutura do segmento TCP

URG dados urgentes (pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeosegmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 56: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

TCP nos de seq e ACKs

Nos de seqm ldquonuacutemerordquodentro do

fluxo de bytes do primeiro byte de dados do segmento

ACKsm no de seq do proacutex byte

esperado do outro ladom ACK cumulativo

P como receptor trata segmentos fora da ordemm R espec do TCP omissa

- deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window sizeN

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksumrwnd

urg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 57: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 58: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

TCP tempo de viagem de ida e volta (RTT ndashRound Trip Time) e Temporizaccedilatildeo

P como escolher o valor do temporizador TCP

r maior que o RTTm mas o RTT varia

r muito curto temporizaccedilatildeo prematuram retransmissotildees

desnecessaacuteriasr muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTTr SampleRTT tempo medido entre

a transmissatildeo do segmento e o recebimento do ACK correspondentem ignora retransmissotildees

r SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTTm usa vaacuterias mediccedilotildees recentes

natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 59: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

r meacutedia moacutevel exponencialmente ponderadar influecircncia de cada amostra diminui exponencialmente com o

tempor valor tiacutepico de a = 0125

3 Camada de Transporte 59

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 60: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo

Escolhendo o intervalo de temporizaccedilatildeor EstimatedRTT mais uma ldquomargem de seguranccedilardquo

m grandes variaccedilotildees no EstimatedRTT-gt maior margem de seguranccedila

r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

r Entatildeo ajusta o temporizador para

TimeoutInterval = EstimatedRTT + 4DevRTT

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

(valor tiacutepico de b = 025)

3 Camada de Transporte 60

RTT estimado ldquomargem de seguranccedilardquo

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 61: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 61

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 62: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Transferecircncia de dados confiaacutevel do TCPr O TCP cria um serviccedilo

rdt sobre o serviccedilo natildeo confiaacutevel do IPm Segmentos transmitidos

em ldquoparalelordquo (pipelined)m Acks cumulativosm O TCP usa um uacutenico

temporizador para retransmissotildees

r As retransmissotildees satildeo disparadas porm estouros de

temporizaccedilatildeom acks duplicados

r Considere inicialmente um transmissor TCP simplificadom ignore acks duplicadosm ignore controles de

fluxo e de congestionamento

3 Camada de Transporte 62

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 63: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Eventos do transmissor TCP

Dados recebidos da aplicaccedilatildeor Cria segmento com no de

sequecircncia (nseq)r nseq eacute o nuacutemero de

sequecircncia do primeiro byte de dados do segmento

r Liga o temporizador se jaacute natildeo estiver ligado (temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

r Valor do temporizador calculado anteriormente

Estouro do temporizadorr Retransmite o segmento

que causou o estouro do temporizador

r Reinicia o temporizadorRecepccedilatildeo de Ackr Se reconhecer segmentos

ainda natildeo reconhecidosm atualizar informaccedilatildeo sobre

o que foi reconhecidom religa o temporizador se

ainda houver segmentos pendentes (natildeo reconhecidos)

3 Camada de Transporte 63

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 64: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Transmissor TCP (simplificado)

3 Camada de Transporte 64

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment seq NextSeqNumpass segment to IP (ie ldquosendrdquo)NextSeqNum = NextSeqNum + length(data) if (timer currently not running)

start timer

data received from application above

retransmit not-yet-acked segment with smallest seq

start timer

timeout

if (y gt SendBase) SendBase = y SendBasendash1 last cumulatively ACKed byte if (there are currently not-yet-acked segments)

start timerelse stop timer

ACK received with ACK field value y

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 65: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 66: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

Seq=120 15 bytes of data

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 67: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 67

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 68: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Retransmissatildeo raacutepida do TCP

r O intervalo do temporizador eacute frequentemente bastante longom longo atraso antes de

retransmitir um pacote perdido

r Detecta segmentos perdidos atraveacutes de ACKsduplicadosm O transmissor

normalmente envia diversos segmentos

m Se um segmento se perder provavelmente haveraacute muitos ACKsduplicados

3 Camada de Transporte 68

se o transmissor receber 3 ACKs para os mesmos dados (ldquotrecircs ACKs duplicadosrdquo)retransmite segmentos natildeo reconhecidos com menores nos de seqsect provavelmente o

segmento natildeo reconhecido se perdeu natildeo eacute preciso esperar o temporizador

retx raacutepida do TCP

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 69: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 69

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 70: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 70

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 71: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket TCP hellip

hellip mais devagar do que o receptor TCP

estaacute entregando (transmissor estaacute

enviando)

do transmissor

3 Camada de Transporte 71

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 72: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Controle de Fluxo do TCP como funciona

r O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwndnos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissorm Tamanho do RcvBuffer eacute

configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

m muitos sistemas operacionais ajustam RcvBuffer automaticamente

r O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

r Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 72

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 73: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCPm estrutura do segmentom transferecircncia confiaacutevel de

dadosm controle de fluxom gerenciamento da conexatildeo

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 73

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 74: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP dialogamr concordam em estabelecer uma conexatildeo (cada um sabendo

que o outro quer estabelecer a conexatildeo)r concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor

servidor-p-clientetamanho rcvBuffer

no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 74

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 75: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

r atrasos variaacuteveisr mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

r reordenaccedilatildeo de mensagensr natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talk

OKESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 75

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 76: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmitereq_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

clientetermina

servidoresquece x

teacutermino daconexatildeo x

retransmitereq_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmitedados(x+1)

aceitadados(x+1)

escolhe xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

clientetermina

ESTAB

escolhe xreq_conn(x)

ESTABacc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 76

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 77: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

escolhe no seq inicial xenvia msg TCP SYN

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

escolhe no seq inicial yenvia msg SYNACK reconhecendo o SYN

ACKbit=1 ACKnum=y+1

SYNACK(x) recebido Indica que o servidor estaacute

ativoenvia ACK para SYNACK

este segmento pode conterdados do cliente para

servidorACK(y) recebidoindica que o cliente estaacute ativo

SYNSENT

ESTAB

SYN RCVD

estado do clienteLISTEN

estado do servidorLISTEN

3 Camada de Transporte 77

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 78: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

cria novo socket paracomunicaccedilatildeo com o cliente

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 78

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 79: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

TCP Encerrando uma conexatildeo

r seja o cliente que o servidor fecham cada um o seu lado da conexatildeom enviam segmento TCP com bit FIN = 1

r respondem ao FIN recebido com um ACKm ao receber um FIN ACK pode ser combinado com o

proacuteprio FINr lida com trocas de FIN simultacircneos

3 Camada de Transporte 79

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 80: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1espera o teacutermino

pelo servidor

ainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas pode

receber dados

clientSocketclose()

estado do cliente estado do servidorESTABESTAB

3 Camada de Transporte 80

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 81: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 81

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 82: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Princiacutepios de Controle de CongestionamentoCongestionamentor informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquor diferente de controle de fluxor Sintomas

m perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

m longos atrasos (enfileiramento nos buffers dos roteadores)

r um dos 10 problemas mais importantes em redes

3 Camada de Transporte 82

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 83: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Causascustos de congestionamento cenaacuterio 1

r dois remetentes dois receptores

r um roteador buffers infinitos

r sem retransmissatildeor capacidade do link

de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo taxa de chegada se aproxima da capacidade 3 Camada de Transporte 83

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 84: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Causascustos de congest cenaacuterio 2r Um roteador buffers finitosr retransmissatildeo pelo remetente de pacote perdido

m entrada camada apl = saiacuteda camada apl lin = lout

m entrada camada transp inclui retransmissotildees lrsquoin ge lout

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 84

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 85: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeitor transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A lin dados originais lout

lin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

l out

lin

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 86: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 87: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheiosr transmissor apenas retransmite

se o pacote sabidamente se perdeu

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildees mas assintoticamente a goodput ainda seriaR2 (por que)

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 88: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

lin dados originais

loutlin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2lin

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 89: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Causascustos de congest cenaacuterio 2Realidade duplicatasr pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

r retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

l out

ao transmitir a R2 alguns pacotes satildeoretransmissotildeesincluindo duplicatasque satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas coacutepias

do pacotebull diminuindo a ldquogoodputrdquo

lin

3 Camada de Transporte 89

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 90: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Causascustos de congestionamento cenaacuterio 3r quatro remetentesr caminhos com muacuteltiplos

enlacesr temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que lin e lrsquoin crescem

R agrave medida que lrsquoin vermelho cresce todos os pacotes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

lin dados originais lout

lin dados originais mais dados retransmitidos

3 Camada de Transporte 90

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 91: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamentor quando pacote eacute descartado qq capacidade de transmissatildeo

jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 91

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 92: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Conteuacutedo do Capiacutetulo 3

r 31 Introduccedilatildeo e serviccedilos de camada de transporte

r 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo

r 33 Transporte natildeo orientado para conexatildeo UDP

r 34 Princiacutepios da transferecircncia confiaacutevel de dados

r 35 Transporte orientado para conexatildeo TCP

r 36 Princiacutepios de controle de congestionamento

r 37 Controle de congestionamento no TCP

3 Camada de Transporte 92

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 93: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa

r Abordagem aumentar a taxa de transmissatildeo (tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perdam aumento aditivo incrementa cwnd de 1 MSS a cada RTT

ateacute detectar uma perdam diminuiccedilatildeo multiplicativa corta cwnd pela metade apoacutes

evento de perda

Comportamento de dente de serra

testando a largura de banda

93

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 94: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Controle de Congestionamento do TCP detalhes

r transmissor limita a transmissatildeoLastByteSent-LastByteAcked

pound cwnd

r cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Taxa de transmissatildeo do TCPr aproximadamente envia uma

janela (cwnd) espera RTT para os ACKs depois envia mais bytes

3 Camada de Transporte 94

taxa = cwndRTT

bytesseg

last byteACKed sent not-

yet ACKed(ldquoin-

flightrdquo)

last byte sent

cwndsender sequence number space

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 95: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

r no iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perdam inicialmente cwnd = 1

MSSm duplica cwnd a cada RTTm atraveacutes do incremento da cwnd para cada ACK recebido

r resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 95

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 96: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

TCP detectando reagindo a perdas

r perda indicada pelo estouro de temporizadorm cwnd eacute reduzida a 1 MSS m janela cresce exponencialmente (como na partida

lenta) ateacute um limiar depois cresce linearmenter perda indicada por ACKs duplicados TCP RENO

m ACKs duplicados indicam que a rede eacute capaz de entregar alguns segmentos

m corta cwnd pela metade depois cresce linearmente

r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que trecircs ACKS duplicados)

3 Camada de Transporte 96

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 97: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

TCP mudando da partida lenta para a CA

P Quando o crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeor Limiar (Threshold) variaacutevel

(ssthresh) r Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 97

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 98: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 98

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 99: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Vazatildeo (throughput) do TCP

r Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTTm Ignore a partida lenta assuma que sempre haja dados a serem

transmitidosr Seja W o tamanho da janela (medida em bytes) quando ocorre uma

perdam Tamanho meacutedio da janela eacute frac34 Wm Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 99

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 100: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Futuro do TCP TCP em ldquotubos longos e largosrdquor exemplo segmentos de 1500 bytes RTT de 100ms

deseja vazatildeo de 10 Gbpsr Requer janela de W = 83333 segmentos em

tracircnsitor Vazatildeo em termos de taxa de perdas (L) [Mathis 1997]

para atingir uma vazatildeo de 10Gbps seria necessaacuteria uma taxa de perdas L = 210-10 demasiado baixa

r Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSStimes

=221TCP do vazatildeo

3 Camada de Transporte 100

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 101: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Equidade (Fairness) do TCP

objetivo de equidade se K sessotildees TCP compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo decapacidade RConexatildeo

TCP 2

3 Camada de Transporte 101

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 102: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Por que o TCP eacute justoDuas sessotildees competindo pela bandar Aumento aditivo daacute gradiente de 1 enquanto vazatildeo aumentar Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

prevenccedilatildeo de congest aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 102

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 103: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Equidade (mais)Equidade e UDPr aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCPm natildeo querem a taxa

estrangulada pelo controle de congestionamento

r preferem usar o UDPm injetam aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Equidade e conexotildees TCP em paralelo

r nada impede que as apls abram conexotildees paralelas entre 2 hosts

r os browsers Web fazem istor exemplo canal com taxa R

compartilhado por 9 conexotildees m novas aplicaccedilotildees pedem 1 TCP

obteacutem taxa de R10m novas aplicaccedilotildees pedem 11 TCPs

obteacutem taxa R2

3 Camada de Transporte 103

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 104: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Transport Layer 3-104

controle de congestionamento assistido pela redesect dois bits no cabeccedilalho IP (campo ToS) satildeo marcados pelo

roteador de rede para indicar o congestionamentosect indicaccedilatildeo de congestionamento eacute levada ateacute o receptorsect o receptor (vendo a indicaccedilatildeo de congestionamento) seta o

bit ECE no segmento de reconhecimento para notificar o transmissor sobre o congestionamento

Notificaccedilatildeo Expliacutecita de Congestionamento (ECN)

origemaplicaccedilatildeotransporte

redeenlacefiacutesica

destinoaplicaccedilatildeotransporte

redeenlacefiacutesica

ECN=00 ECN=11

ECE=1

datagrama IP

segmento TCP de ACK(nova flag)

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105

Page 105: Capítulo 3: Camada de Transportesuruagy/cursos/redes/cap3...camadas de transporte e de enlace r na lista dos 10 tópicos mais importantes em redes! r características do canal não

Capiacutetulo 3 Resumo

r Princiacutepios por traacutes dos serviccedilos da camada de transportem multiplexaccedilatildeo

demultiplexaccedilatildeom transferecircncia confiaacutevel de

dadosm controle de fluxom controle de congestionamento

r instanciaccedilatildeo e implementaccedilatildeo na Internetm UDPm TCP

Proacuteximo capiacutetulor saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

r entramos no ldquonuacutecleordquo da rede

r dois capiacutetulos sobre a camada de redem plano de dadosm plano de controle

3 Camada de Transporte 105